;
3 | export default src;
4 | }
5 |
--------------------------------------------------------------------------------
/packages/api-v4/src/domains/index.ts:
--------------------------------------------------------------------------------
1 | export * from './domains';
2 |
3 | export * from './records';
4 |
5 | export * from './types';
6 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from './PaymentDrawer';
2 |
--------------------------------------------------------------------------------
/packages/queries/src/stackscripts/index.ts:
--------------------------------------------------------------------------------
1 | export * from './keys';
2 | export * from './requests';
3 | export * from './stackscripts';
4 |
--------------------------------------------------------------------------------
/packages/ui/src/foundations/index.ts:
--------------------------------------------------------------------------------
1 | export * from './breakpoints';
2 | export * from './keyframes';
3 | export * from './themes';
4 |
--------------------------------------------------------------------------------
/packages/api-v4/src/delivery/index.ts:
--------------------------------------------------------------------------------
1 | export * from './destinations';
2 |
3 | export * from './streams';
4 |
5 | export * from './types';
6 |
--------------------------------------------------------------------------------
/packages/api-v4/src/regions/index.ts:
--------------------------------------------------------------------------------
1 | export * from './constants';
2 |
3 | export * from './regions';
4 |
5 | export * from './types';
6 |
--------------------------------------------------------------------------------
/packages/api-v4/src/volumes/index.ts:
--------------------------------------------------------------------------------
1 | export * from './migrations';
2 |
3 | export * from './types';
4 |
5 | export * from './volumes';
6 |
--------------------------------------------------------------------------------
/packages/manager/src/components/DebouncedSearchTextField/index.tsx:
--------------------------------------------------------------------------------
1 | export { DebouncedSearchTextField } from './DebouncedSearchTextField';
2 |
--------------------------------------------------------------------------------
/packages/api-v4/src/kubernetes/index.ts:
--------------------------------------------------------------------------------
1 | export * from './kubernetes';
2 |
3 | export * from './nodePools';
4 |
5 | export * from './types';
6 |
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/FiraCode.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/FiraCode.ttf
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/FiraCode.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/FiraCode.woff
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/Lato-Bold.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/Lato-Bold.eot
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/Lato-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/Lato-Bold.ttf
--------------------------------------------------------------------------------
/packages/manager/src/components/NullComponent.tsx:
--------------------------------------------------------------------------------
1 | const NullComponent = () => {
2 | return null;
3 | };
4 |
5 | export default NullComponent;
6 |
--------------------------------------------------------------------------------
/packages/manager/src/components/TableRow/index.ts:
--------------------------------------------------------------------------------
1 | export { TableRow } from './TableRow';
2 | export type { TableRowProps } from './TableRow';
3 |
--------------------------------------------------------------------------------
/packages/manager/cypress/fixtures/object-storage-files/1.txt:
--------------------------------------------------------------------------------
1 | This is a text file.
2 |
3 | It contains text.
4 |
5 | Let's upload it somewhere cool!
6 |
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/Lato-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/Lato-Bold.woff
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/Lato-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/Lato-Bold.woff2
--------------------------------------------------------------------------------
/packages/manager/src/components/TableCell/index.ts:
--------------------------------------------------------------------------------
1 | export { TableCell } from './TableCell';
2 | export type { TableCellProps } from './TableCell';
3 |
--------------------------------------------------------------------------------
/packages/manager/cypress/fixtures/test_screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/cypress/fixtures/test_screenshot.png
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/Lato-Regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/Lato-Regular.eot
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/Lato-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/Lato-Regular.ttf
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/Lato-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/Lato-Regular.woff
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/Lato-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/Lato-Regular.woff2
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/Lato-Semibold.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/Lato-Semibold.eot
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/Lato-Semibold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/Lato-Semibold.ttf
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/Lato-Semibold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/Lato-Semibold.woff
--------------------------------------------------------------------------------
/packages/manager/src/components/BarPercent/index.ts:
--------------------------------------------------------------------------------
1 | export { BarPercent } from './BarPercent';
2 | export type { BarPercentProps } from './BarPercent';
3 |
--------------------------------------------------------------------------------
/packages/manager/src/components/Menu.ts:
--------------------------------------------------------------------------------
1 | export { default as Menu } from '@mui/material/Menu';
2 | export type { MenuProps } from '@mui/material/Menu';
3 |
--------------------------------------------------------------------------------
/packages/manager/src/store/globalErrors/index.ts:
--------------------------------------------------------------------------------
1 | export { default, defaultState } from './globalErrors.reducer';
2 | export type { State } from './types';
3 |
--------------------------------------------------------------------------------
/packages/ui/src/components/List/List.ts:
--------------------------------------------------------------------------------
1 | export type { ListProps } from '@mui/material/List';
2 | export { default as List } from '@mui/material/List';
3 |
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/Lato-Semibold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/Lato-Semibold.woff2
--------------------------------------------------------------------------------
/packages/manager/src/features/Longview/LongviewDetail/DetailTabs/Processes/types.ts:
--------------------------------------------------------------------------------
1 | export interface Process {
2 | name: string;
3 | user: string;
4 | }
5 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Managed/Contacts/common.ts:
--------------------------------------------------------------------------------
1 | export interface ManagedContactGroup {
2 | contactNames: string[];
3 | groupName: string;
4 | }
5 |
--------------------------------------------------------------------------------
/packages/api-v4/src/iam/index.ts:
--------------------------------------------------------------------------------
1 | export * from './delegation';
2 | export * from './delegation.types';
3 |
4 | export * from './iam';
5 | export * from './types';
6 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/api/account.ts:
--------------------------------------------------------------------------------
1 | import { getAll } from './common';
2 |
3 | export const getProfile = () => {
4 | return getAll('profile');
5 | };
6 |
--------------------------------------------------------------------------------
/packages/manager/public/assets/marketplace-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/assets/marketplace-background.png
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/UbuntuMono-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/UbuntuMono-Regular.ttf
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/UbuntuMono-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/UbuntuMono-Regular.woff
--------------------------------------------------------------------------------
/packages/manager/src/components/AppBar.ts:
--------------------------------------------------------------------------------
1 | export { default as AppBar } from '@mui/material/AppBar';
2 | export type { AppBarProps } from '@mui/material/AppBar';
3 |
--------------------------------------------------------------------------------
/packages/utilities/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "@linode/tsconfig/package",
4 | "@linode/tsconfig/react"
5 | ],
6 | "include": ["src"]
7 | }
8 |
--------------------------------------------------------------------------------
/packages/manager/cypress/fixtures/object-storage-files/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/cypress/fixtures/object-storage-files/2.jpg
--------------------------------------------------------------------------------
/packages/manager/cypress/fixtures/object-storage-files/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/cypress/fixtures/object-storage-files/3.jpg
--------------------------------------------------------------------------------
/packages/manager/cypress/fixtures/object-storage-files/4.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/cypress/fixtures/object-storage-files/4.zip
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/SourceCodePro-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/SourceCodePro-Regular.ttf
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/UbuntuMono-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/UbuntuMono-Regular.woff2
--------------------------------------------------------------------------------
/packages/manager/src/components/LandingHeader/index.tsx:
--------------------------------------------------------------------------------
1 | export type { LandingHeaderProps } from './LandingHeader';
2 | export { LandingHeader } from './LandingHeader';
3 |
--------------------------------------------------------------------------------
/packages/manager/src/components/SvgIcon.ts:
--------------------------------------------------------------------------------
1 | export { default as SvgIcon } from '@mui/material/SvgIcon';
2 | export type { SvgIconProps } from '@mui/material/SvgIcon';
3 |
--------------------------------------------------------------------------------
/packages/manager/src/components/TableSortCell/index.ts:
--------------------------------------------------------------------------------
1 | export { TableSortCell } from './TableSortCell';
2 | export type { TableSortCellProps } from './TableSortCell';
3 |
--------------------------------------------------------------------------------
/packages/manager/src/components/Toolbar.ts:
--------------------------------------------------------------------------------
1 | export { default as Toolbar } from '@mui/material/Toolbar';
2 | export type { ToolbarProps } from '@mui/material/Toolbar';
3 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Databases/DatabaseDetail/DatabaseSettings/index.ts:
--------------------------------------------------------------------------------
1 | import DatabaseSettings from './DatabaseSettings';
2 | export default DatabaseSettings;
3 |
--------------------------------------------------------------------------------
/packages/manager/src/utilities/escapeStringForCLI.ts:
--------------------------------------------------------------------------------
1 | export const escapeStringForCLI = (value: string) => {
2 | return value.replace(/(["'$`\\])/g, '\\$1');
3 | };
4 |
--------------------------------------------------------------------------------
/packages/ui/src/components/SvgIcon/SvgIcon.ts:
--------------------------------------------------------------------------------
1 | export { default as SvgIcon } from '@mui/material/SvgIcon';
2 | export type { SvgIconProps } from '@mui/material/SvgIcon';
3 |
--------------------------------------------------------------------------------
/packages/ui/src/utilities/convertToKebabCase.ts:
--------------------------------------------------------------------------------
1 | export const convertToKebabCase = (string: string) => {
2 | return string.replace(/\s+/g, '-').toLowerCase();
3 | };
4 |
--------------------------------------------------------------------------------
/packages/api-v4/src/netloadbalancers/index.ts:
--------------------------------------------------------------------------------
1 | export * from './listeners';
2 | export * from './netloadbalancers';
3 | export * from './nodes';
4 | export * from './types';
5 |
--------------------------------------------------------------------------------
/packages/api-v4/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vitest/config';
2 |
3 | export default defineConfig({
4 | test: {
5 | globals: true,
6 | },
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/cypress/fixtures/machine-images/test-image.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/cypress/fixtures/machine-images/test-image.gz
--------------------------------------------------------------------------------
/packages/manager/src/components/MenuItem.ts:
--------------------------------------------------------------------------------
1 | export type { MenuItemProps } from '@mui/material/MenuItem';
2 | export { default as MenuItem } from '@mui/material/MenuItem';
3 |
--------------------------------------------------------------------------------
/packages/manager/src/components/MenuList.ts:
--------------------------------------------------------------------------------
1 | export type { MenuListProps } from '@mui/material/MenuList';
2 | export { default as MenuList } from '@mui/material/MenuList';
3 |
--------------------------------------------------------------------------------
/packages/queries/src/profile/index.ts:
--------------------------------------------------------------------------------
1 | export * from './preferences';
2 | export * from './profile';
3 | export * from './securityQuestions';
4 | export * from './tokens';
5 |
--------------------------------------------------------------------------------
/packages/ui/src/components/ListItem/ListItem.ts:
--------------------------------------------------------------------------------
1 | export type { ListItemProps } from '@mui/material/ListItem';
2 | export { default as ListItem } from '@mui/material/ListItem';
3 |
--------------------------------------------------------------------------------
/packages/ui/src/utilities/index.ts:
--------------------------------------------------------------------------------
1 | export * from './clamp';
2 | export * from './convertToKebabCase';
3 | export * from './omittedProps';
4 | export * from './stringUtils';
5 |
--------------------------------------------------------------------------------
/packages/api-v4/src/cloudpulse/index.ts:
--------------------------------------------------------------------------------
1 | export * from './alerts';
2 |
3 | export * from './dashboards';
4 |
5 | export * from './services';
6 |
7 | export * from './types';
8 |
--------------------------------------------------------------------------------
/packages/api-v4/src/tags/types.ts:
--------------------------------------------------------------------------------
1 | export interface Tag {
2 | label: string;
3 | }
4 |
5 | export interface TagRequest {
6 | label: string;
7 | linodes?: number[];
8 | }
9 |
--------------------------------------------------------------------------------
/packages/manager/cypress/fixtures/stackscripts/stackscript-basic.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # This is a basic valid StackScript to test StackScript creation.
3 |
4 | echo "Hello, world!"
5 |
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/SourceCodePro-Regular.ttf.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/SourceCodePro-Regular.ttf.woff
--------------------------------------------------------------------------------
/packages/manager/src/components/DateTimeDisplay/index.ts:
--------------------------------------------------------------------------------
1 | export type { DateTimeDisplayProps } from './DateTimeDisplay';
2 | export { DateTimeDisplay } from './DateTimeDisplay';
3 |
--------------------------------------------------------------------------------
/packages/manager/src/components/DisplayPrice/index.tsx:
--------------------------------------------------------------------------------
1 | export { DisplayPrice, displayPrice } from './DisplayPrice';
2 | export type { DisplayPriceProps } from './DisplayPrice';
3 |
--------------------------------------------------------------------------------
/packages/manager/src/components/TableBody.tsx:
--------------------------------------------------------------------------------
1 | export { default as TableBody } from '@mui/material/TableBody';
2 | export type { TableBodyProps } from '@mui/material/TableBody';
3 |
--------------------------------------------------------------------------------
/packages/manager/src/components/TableHead.tsx:
--------------------------------------------------------------------------------
1 | export { default as TableHead } from '@mui/material/TableHead';
2 | export type { TableHeadProps } from '@mui/material/TableHead';
3 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Billing/PdfGenerator/LinodeLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/src/features/Billing/PdfGenerator/LinodeLogo.png
--------------------------------------------------------------------------------
/packages/manager/src/features/Billing/PdfGenerator/akamai-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/src/features/Billing/PdfGenerator/akamai-logo.png
--------------------------------------------------------------------------------
/packages/manager/public/fonts/fonts/SourceCodePro-Regular.ttf.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linode/manager/HEAD/packages/manager/public/fonts/fonts/SourceCodePro-Regular.ttf.woff2
--------------------------------------------------------------------------------
/packages/manager/src/store/globalErrors/types.ts:
--------------------------------------------------------------------------------
1 | interface S {
2 | account_unactivated: boolean;
3 | api_maintenance_mode: boolean;
4 | }
5 |
6 | export type State = Partial;
7 |
--------------------------------------------------------------------------------
/packages/ui/src/components/Button/index.ts:
--------------------------------------------------------------------------------
1 | export * from './Button';
2 | export * from './LinkButton';
3 | export * from './StyledActionButton';
4 | export * from './StyledTagButton';
5 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/redactAccessToken.ts:
--------------------------------------------------------------------------------
1 | export const redactAccessToken = (s: string) => {
2 | return s.replace(/access_token=[^&]+/g, 'access_token=REDACTED');
3 | };
4 |
--------------------------------------------------------------------------------
/packages/manager/cypress/e2e/synthetic/hello-world.spec.ts:
--------------------------------------------------------------------------------
1 | describe('Synthetic monitoring tests placeholder', () => {
2 | it('can run synthetic monitoring test suite', () => {});
3 | });
4 |
--------------------------------------------------------------------------------
/packages/manager/src/components/PaginationFooter/PaginationFooter.constants.ts:
--------------------------------------------------------------------------------
1 | export const MIN_PAGE_SIZE = 25;
2 |
3 | export const PAGE_SIZES = [MIN_PAGE_SIZE, 50, 75, 100, Infinity];
4 |
--------------------------------------------------------------------------------
/packages/ui/src/components/IconButton/IconButton.tsx:
--------------------------------------------------------------------------------
1 | export type { IconButtonProps } from '@mui/material/IconButton';
2 | export { default as IconButton } from '@mui/material/IconButton';
3 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13120-tests-1763655928886.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Tests
3 | ---
4 |
5 | Proactive IAM e2e gating ([#13120](https://github.com/linode/manager/pull/13120))
6 |
--------------------------------------------------------------------------------
/packages/manager/src/components/ListItemText.ts:
--------------------------------------------------------------------------------
1 | export type { ListItemTextProps } from '@mui/material/ListItemText';
2 | export { default as ListItemText } from '@mui/material/ListItemText';
3 |
--------------------------------------------------------------------------------
/packages/tsconfig/tsconfig.react.json:
--------------------------------------------------------------------------------
1 | {
2 | /**
3 | * This tsconfig should be used when a package needs React / JSX.
4 | */
5 | "compilerOptions": {
6 | "jsx": "react"
7 | }
8 | }
--------------------------------------------------------------------------------
/packages/ui/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './assets';
2 | export * from './components';
3 | export * from './foundations';
4 | export * from './utilities';
5 | export * from '@mui/material/styles';
6 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/evenizeNumber.ts:
--------------------------------------------------------------------------------
1 | export const evenizeNumber = (n: number): number => {
2 | if (n === 0) {
3 | return n;
4 | }
5 | return n % 2 === 0 ? n : n - 1;
6 | };
7 |
--------------------------------------------------------------------------------
/packages/utilities/src/types/LinodeCreateType.ts:
--------------------------------------------------------------------------------
1 | export type LinodeCreateType =
2 | | 'Backups'
3 | | 'Clone Linode'
4 | | 'Images'
5 | | 'One-Click'
6 | | 'OS'
7 | | 'StackScripts';
8 |
--------------------------------------------------------------------------------
/packages/queries/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "@linode/tsconfig/package",
4 | "@linode/tsconfig/react",
5 | "@linode/tsconfig/non-strict"
6 | ],
7 | "include": ["src"]
8 | }
9 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
--------------------------------------------------------------------------------
/packages/api-v4/src/betas/types.ts:
--------------------------------------------------------------------------------
1 | export interface Beta {
2 | description?: string;
3 | ended?: string;
4 | id: string;
5 | label: string;
6 | more_info?: string;
7 | started: string;
8 | }
9 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13176-tests-1765218851864.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Tests
3 | ---
4 |
5 | Mock Destination data update values ([#13176](https://github.com/linode/manager/pull/13176))
6 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13186-fixed-1765370117878.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Fixed
3 | ---
4 |
5 | Typo in NodeBalancer Settings tooltip ([#13186](https://github.com/linode/manager/pull/13186))
6 |
--------------------------------------------------------------------------------
/packages/manager/.storybook/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite';
2 | import react from '@vitejs/plugin-react-swc';
3 |
4 | export default defineConfig({
5 | plugins: [react()],
6 | });
7 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Profile/AuthenticationSettings/SecurityQuestions/types.ts:
--------------------------------------------------------------------------------
1 | // import { SecurityQuestions, AnsweredSecurityQuestions, NullSecurityQuestions } from '@linode/api-v4/lib/profile';
2 |
--------------------------------------------------------------------------------
/packages/queries/src/netloadbalancers/index.ts:
--------------------------------------------------------------------------------
1 | export * from './keys';
2 | export * from './listeners';
3 | export * from './netloadbalancers';
4 | export * from './nodes';
5 | export * from './requests';
6 |
--------------------------------------------------------------------------------
/packages/validation/src/twofactor.schema.ts:
--------------------------------------------------------------------------------
1 | import { object, string } from 'yup';
2 |
3 | export const enableTwoFactorSchema = object({
4 | tfa_code: string().required('Please enter a token.'),
5 | });
6 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13185-tests-1765297901858.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Tests
3 | ---
4 |
5 | Temporarily disable DBaaS update tests ([#13185](https://github.com/linode/manager/pull/13185))
6 |
--------------------------------------------------------------------------------
/packages/manager/src/components/PrimaryNav/constants.ts:
--------------------------------------------------------------------------------
1 | export const SIDEBAR_WIDTH = 232;
2 | export const SIDEBAR_COLLAPSED_WIDTH = 49; // 48px + 1px border
3 | export const PRIMARY_NAV_TOGGLE_HEIGHT = 46;
4 |
--------------------------------------------------------------------------------
/packages/manager/src/utilities/isPast.ts:
--------------------------------------------------------------------------------
1 | import { parseAPIDate } from './date';
2 |
3 | export const isPast =
4 | (a: string) =>
5 | (b: string): boolean =>
6 | parseAPIDate(b) >= parseAPIDate(a);
7 |
--------------------------------------------------------------------------------
/packages/api-v4/src/nodebalancers/index.ts:
--------------------------------------------------------------------------------
1 | export * from './nodebalancer-config-nodes';
2 |
3 | export * from './nodebalancer-configs';
4 |
5 | export * from './nodebalancers';
6 |
7 | export * from './types';
8 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13149-added-1765469597776.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Added
3 | ---
4 |
5 | Elastic Stack and Weaviate to Marketplace Apps ([#13149](https://github.com/linode/manager/pull/13149))
6 |
--------------------------------------------------------------------------------
/packages/manager/cypress/fixtures/example.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Using fixtures to represent data",
3 | "email": "hello@cypress.io",
4 | "body": "Fixtures are a great way to mock data for responses to routes"
5 | }
--------------------------------------------------------------------------------
/packages/manager/src/routes/volumes/constants.ts:
--------------------------------------------------------------------------------
1 | export const VOLUME_TABLE_DEFAULT_ORDER = 'asc';
2 | export const VOLUME_TABLE_DEFAULT_ORDER_BY = 'label';
3 | export const VOLUME_TABLE_PREFERENCE_KEY = 'volumes';
4 |
--------------------------------------------------------------------------------
/packages/utilities/src/constants.ts:
--------------------------------------------------------------------------------
1 | // Maximum page size allowed by the API. Used in the `getAll()` helper function
2 | // to request as many items at once as possible.
3 | export const API_MAX_PAGE_SIZE = 500;
4 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/maybeCastToNumber.ts:
--------------------------------------------------------------------------------
1 | import { isNilOrEmpty } from './isNilOrEmpty';
2 |
3 | export const maybeCastToNumber = (v: number | string) =>
4 | isNilOrEmpty(v) ? undefined : Number(v);
5 |
--------------------------------------------------------------------------------
/packages/api-v4/eslint.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'eslint/config';
2 |
3 | import { baseConfig } from '../manager/eslint.config.js';
4 |
5 | export default defineConfig({
6 | extends: baseConfig,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13189-changed-1765378735594.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Changed
3 | ---
4 |
5 | IAM: Enable account_viewer to access users table ([#13189](https://github.com/linode/manager/pull/13189))
6 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13192-tests-1765463156655.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Tests
3 | ---
4 |
5 | Fix e2e tests impacted by Generational Plans release ([#13192](https://github.com/linode/manager/pull/13192))
6 |
--------------------------------------------------------------------------------
/packages/manager/src/components/TableFooter.tsx:
--------------------------------------------------------------------------------
1 | import _TableFooter from '@mui/material/TableFooter';
2 | export const TableFooter = _TableFooter;
3 | export type { TableFooterProps } from '@mui/material/TableFooter';
4 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Domains/constants.ts:
--------------------------------------------------------------------------------
1 | export const DOMAINS_TABLE_DEFAULT_ORDER = 'asc';
2 | export const DOMAINS_TABLE_DEFAULT_ORDER_BY = 'domain';
3 | export const DOMAINS_TABLE_PREFERENCE_KEY = 'domains';
4 |
--------------------------------------------------------------------------------
/packages/queries/.changeset/pr-13189-changed-1765378759554.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/queries": Changed
3 | ---
4 |
5 | IAM: Enable account_viewer to access users table ([#13189](https://github.com/linode/manager/pull/13189))
6 |
--------------------------------------------------------------------------------
/packages/shared/eslint.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'eslint/config';
2 |
3 | import { baseConfig } from '../manager/eslint.config.js';
4 |
5 | export default defineConfig({
6 | extends: baseConfig,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/ui/eslint.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'eslint/config';
2 |
3 | import { baseConfig } from '../manager/eslint.config.js';
4 |
5 | export default defineConfig({
6 | extends: baseConfig,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/utilities/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vitest/config';
2 |
3 | export default defineConfig({
4 | test: {
5 | environment: 'jsdom',
6 | setupFiles: './testSetup.ts',
7 | },
8 | });
9 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13190-fixed-1765447529132.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Fixed
3 | ---
4 |
5 | Ensure browser history integrity when redirecting in IAM ([#13190](https://github.com/linode/manager/pull/13190))
6 |
--------------------------------------------------------------------------------
/packages/queries/eslint.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'eslint/config';
2 |
3 | import { baseConfig } from '../manager/eslint.config.js';
4 |
5 | export default defineConfig({
6 | extends: baseConfig,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/utilities/eslint.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'eslint/config';
2 |
3 | import { baseConfig } from '../manager/eslint.config.js';
4 |
5 | export default defineConfig({
6 | extends: baseConfig,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/validation/eslint.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'eslint/config';
2 |
3 | import { baseConfig } from '../manager/eslint.config.js';
4 |
5 | export default defineConfig({
6 | extends: baseConfig,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/validation/src/transfers.schema.ts:
--------------------------------------------------------------------------------
1 | import { array, number, object } from 'yup';
2 |
3 | export const CreateTransferSchema = object({
4 | entities: object({
5 | linodes: array().of(number()),
6 | }),
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/cypress/fixtures/stackscripts/stackscript-no-shebang.sh:
--------------------------------------------------------------------------------
1 | # This is a StackScript that does not include a shebang.
2 | # This is used to test StackScript validation/error messages.
3 |
4 | echo "Hello, world!"
5 |
--------------------------------------------------------------------------------
/packages/ui/src/components/ClickAwayListener/ClickAwayListener.ts:
--------------------------------------------------------------------------------
1 | export type { ClickAwayListenerProps } from '@mui/material/ClickAwayListener';
2 | export { default as ClickAwayListener } from '@mui/material/ClickAwayListener';
3 |
--------------------------------------------------------------------------------
/packages/manager/src/factories/userEntityPermissions.ts:
--------------------------------------------------------------------------------
1 | import type { PermissionType } from '@linode/api-v4';
2 |
3 | export const userEntityPermissionsFactory: PermissionType[] = [
4 | 'reboot_linode',
5 | 'view_linode',
6 | ];
7 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Billing/BillingPanels/ContactInfoPanel/UpdateContactInformationForm/index.ts:
--------------------------------------------------------------------------------
1 | import UpdateContactInformationForm from './UpdateContactInformationForm';
2 | export default UpdateContactInformationForm;
3 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Delivery/Streams/constants.ts:
--------------------------------------------------------------------------------
1 | export const STREAMS_TABLE_DEFAULT_ORDER = 'desc';
2 | export const STREAMS_TABLE_DEFAULT_ORDER_BY = 'updated';
3 | export const STREAMS_TABLE_PREFERENCE_KEY = 'streams';
4 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/breakpoints.ts:
--------------------------------------------------------------------------------
1 | const windowIsNarrowerThan = (breakpoint: number): boolean => {
2 | return window.matchMedia(`(max-width: ${breakpoint}px)`).matches;
3 | };
4 |
5 | export default windowIsNarrowerThan;
6 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/pluralize.ts:
--------------------------------------------------------------------------------
1 | export const pluralize = (
2 | single: string,
3 | plural: string,
4 | value: number | string,
5 | ) => {
6 | return value === 1 ? `${value} ${single}` : `${value} ${plural}`;
7 | };
8 |
--------------------------------------------------------------------------------
/packages/api-v4/.changeset/pr-13171-added-1764924231615.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/api-v4": Added
3 | ---
4 |
5 | `Akamai Cloud Pulse Logs LKE-E Audit ` to the `AccountCapability` type ([#13171](https://github.com/linode/manager/pull/13171))
6 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13170-fixed-1764918493011.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Fixed
3 | ---
4 |
5 | Show edit RDNS button for VPC NAT IPv4 address row in linode network tab ([#13170](https://github.com/linode/manager/pull/13170))
6 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13200-changed-1765812688683.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Changed
3 | ---
4 |
5 | IAM: allow users with account_viewer role to see the roles table ([#13200](https://github.com/linode/manager/pull/13200))
6 |
--------------------------------------------------------------------------------
/packages/manager/src/factories/userAccountPermissions.ts:
--------------------------------------------------------------------------------
1 | import type { PermissionType } from '@linode/api-v4';
2 |
3 | export const userAccountPermissionsFactory: PermissionType[] = [
4 | 'create_linode',
5 | 'create_firewall',
6 | ];
7 |
--------------------------------------------------------------------------------
/packages/manager/src/mocks/testServer.ts:
--------------------------------------------------------------------------------
1 | import { setupServer } from 'msw/node';
2 |
3 | import { handlers } from './serverHandlers';
4 |
5 | export const server = setupServer(...handlers);
6 | export { http, HttpResponse } from 'msw';
7 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/formatStatus.ts:
--------------------------------------------------------------------------------
1 | import { capitalizeAllWords } from './capitalize';
2 |
3 | export const getFormattedStatus = (status: string): string => {
4 | return capitalizeAllWords(status.replace(/_/g, ' '));
5 | };
6 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13201-fixed-1765798247833.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Fixed
3 | ---
4 |
5 | IAM: Remove Role filter (already assigned roles) in ChangeRoleForEntityDrawer ([#13201](https://github.com/linode/manager/pull/13201))
6 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/getDisplayName.ts:
--------------------------------------------------------------------------------
1 | import type * as React from 'react';
2 |
3 | export const getDisplayName = (Component: React.ComponentType
) => {
4 | return Component.displayName || Component.name || 'Component';
5 | };
6 |
--------------------------------------------------------------------------------
/packages/validation/.changeset/pr-13176-changed-1765202473278.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/validation": Changed
3 | ---
4 |
5 | Logs Destination Form - add matching host and bucket name validation ([#13176](https://github.com/linode/manager/pull/13176))
6 |
--------------------------------------------------------------------------------
/packages/api-v4/src/vlans/types.ts:
--------------------------------------------------------------------------------
1 | export interface VLAN {
2 | cidr_block: string;
3 | created: string;
4 | id: number;
5 | label: string;
6 | linodes: { id: number; ipv4_address: string; mac_address: string }[];
7 | region: string;
8 | }
9 |
--------------------------------------------------------------------------------
/packages/api-v4/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["@linode/tsconfig/package", "@linode/tsconfig/emit-types"],
3 | "compilerOptions": {
4 | "outDir": "./lib",
5 | "baseUrl": ".",
6 | },
7 | "include": [
8 | "src"
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13194-fixed-1765470340634.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Fixed
3 | ---
4 |
5 | IAM: Enable account_viewer to access IAM User Details, User Roles and User Entities ([#13194](https://github.com/linode/manager/pull/13194))
6 |
--------------------------------------------------------------------------------
/packages/manager/src/features/StackScripts/types.ts:
--------------------------------------------------------------------------------
1 | import type { ResourcePage, StackScript } from '@linode/api-v4';
2 |
3 | export type StackScriptsRequest = (
4 | params?: unknown,
5 | filter?: unknown
6 | ) => Promise>;
7 |
--------------------------------------------------------------------------------
/packages/manager/src/queries/managed/types.ts:
--------------------------------------------------------------------------------
1 | import type { ManagedIssue } from '@linode/api-v4/lib/managed/types';
2 |
3 | export interface ExtendedIssue extends ManagedIssue {
4 | dateClosed?: string;
5 | status?: 'closed' | 'new' | 'open';
6 | }
7 |
--------------------------------------------------------------------------------
/packages/ui/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "@linode/tsconfig/package",
4 | "@linode/tsconfig/react",
5 | ],
6 | "compilerOptions": {
7 | "types": ["@testing-library/jest-dom"]
8 | },
9 | "include": ["src"],
10 | }
11 |
--------------------------------------------------------------------------------
/packages/utilities/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './__data__';
2 |
3 | export * from './constants';
4 |
5 | export * from './factories';
6 |
7 | export * from './helpers';
8 |
9 | export * from './hooks';
10 |
11 | export * from './types';
12 |
--------------------------------------------------------------------------------
/packages/api-v4/.changeset/pr-13187-upcoming-features-1765970845449.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/api-v4": Upcoming Features
3 | ---
4 |
5 | Add new API endpoints and types for Resource Locking feature(RESPROT2) ([#13187](https://github.com/linode/manager/pull/13187))
6 |
--------------------------------------------------------------------------------
/packages/api-v4/.changeset/pr-13193-changed-1765542569473.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/api-v4": Changed
3 | ---
4 |
5 | Renamed updated_at, created_at to updated,created in NotificationChannelBase interface ([#13193](https://github.com/linode/manager/pull/13193))
6 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13188-upcoming-features-1765378307536.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Upcoming Features
3 | ---
4 |
5 | UI/UX enhancements and fixes for Rule Sets & Prefix Lists (part-2) ([#13188](https://github.com/linode/manager/pull/13188))
6 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/constants/login.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Constants related to Cloud Manager login/logout flows.
3 | */
4 |
5 | /**
6 | * Login base URL for Cloud Manager.
7 | */
8 | export const loginBaseUrl = Cypress.env('REACT_APP_LOGIN_ROOT');
9 |
--------------------------------------------------------------------------------
/packages/manager/src/assets/icons/divider-vertical.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Delivery/Destinations/constants.ts:
--------------------------------------------------------------------------------
1 | export const DESTINATIONS_TABLE_DEFAULT_ORDER = 'desc';
2 | export const DESTINATIONS_TABLE_DEFAULT_ORDER_BY = 'created';
3 | export const DESTINATIONS_TABLE_PREFERENCE_KEY = 'destinations';
4 |
--------------------------------------------------------------------------------
/packages/manager/src/utilities/filterCurrentLinodeTypes.ts:
--------------------------------------------------------------------------------
1 | import type { ExtendedType } from './extendType';
2 |
3 | export const filterCurrentTypes = (types: ExtendedType[] = []) => {
4 | return types.filter((thisType) => !thisType.isDeprecated);
5 | };
6 |
--------------------------------------------------------------------------------
/packages/ui/src/assets/icons/radioRadioed.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/validation/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["@linode/tsconfig/package", "@linode/tsconfig/emit-types"],
3 | "compilerOptions": {
4 | "outDir": "./lib",
5 | "baseUrl": ".",
6 | },
7 | "include": [
8 | "src"
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/packages/api-v4/src/profile/index.ts:
--------------------------------------------------------------------------------
1 | export * from './accessTokens';
2 |
3 | export * from './appTokens';
4 |
5 | export * from './profile';
6 |
7 | export * from './sshkeys';
8 |
9 | export * from './twofactor';
10 |
11 | export * from './types';
12 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/constants/user.ts:
--------------------------------------------------------------------------------
1 | /** Notice shown to users not setting up security questions. */
2 | export const verificationBannerNotice =
3 | 'Add verification details to enhance account security and ensure prompt assistance when needed.';
4 |
--------------------------------------------------------------------------------
/packages/manager/src/factories/tags.ts:
--------------------------------------------------------------------------------
1 | import { Factory } from '@linode/utilities';
2 |
3 | import type { Tag } from '@linode/api-v4';
4 |
5 | export const tagFactory = Factory.Sync.makeFactory({
6 | label: Factory.each((id) => `tag-${id + 1}`),
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/plugins/plugin.ts:
--------------------------------------------------------------------------------
1 | export type CypressPlugin = (
2 | on: Cypress.PluginEvents,
3 | config: Cypress.PluginConfigOptions
4 | ) =>
5 | | Cypress.PluginConfigOptions
6 | | Promise
7 | | void;
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Lish/lishLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { Lish } from './Lish';
4 |
5 | export const lishLazyRoute = createLazyRoute('/linodes/$linodeId/lish/$type')({
6 | component: Lish,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/queries/.changeset/pr-13187-upcoming-features-1765970953049.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/queries": Upcoming Features
3 | ---
4 |
5 | Add new API queries for CRUD of locks for Resource Locking feature(RESPROT2) ([#13187](https://github.com/linode/manager/pull/13187))
6 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13150-upcoming-features-1764648735682.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Upcoming Features
3 | ---
4 |
5 | Introduce and conditionally render Notification Channels tab under ACLP-Alerting ([#13150](https://github.com/linode/manager/pull/13150))
6 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13151-upcoming-features-1765447199412.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Upcoming Features
3 | ---
4 |
5 | Add back navigation functionality to Drawer and integrate it with PrefixList Drawer ([#13151](https://github.com/linode/manager/pull/13151))
6 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13193-upcoming-features-1765540702676.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Upcoming Features
3 | ---
4 |
5 | Introduce Listing for ACLP-Alerting Notification channels with ordering, pagination ([#13193](https://github.com/linode/manager/pull/13193))
6 |
--------------------------------------------------------------------------------
/packages/manager/src/hooks/types.ts:
--------------------------------------------------------------------------------
1 | import type { AnyAction } from 'redux';
2 | import type { ThunkDispatch } from 'redux-thunk';
3 | import type { ApplicationState } from 'src/store';
4 |
5 | export type Dispatch = ThunkDispatch;
6 |
--------------------------------------------------------------------------------
/packages/api-v4/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'tsup';
2 |
3 | export default defineConfig({
4 | entry: ['src/index.ts'],
5 | format: ['esm', 'cjs', 'iife'],
6 | target: 'es6',
7 | outDir: 'lib',
8 | splitting: false,
9 | dts: false,
10 | });
11 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodeCreate/SMTP.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import { SMTPRestrictionText } from '../SMTPRestrictionText';
4 |
5 | export const SMTP = () => {
6 | return {({ text }) => text};
7 | };
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Profile/SSHKeys/sshKeysLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { SSHKeys } from './SSHKeys';
4 |
5 | export const sshKeysLazyRoute = createLazyRoute('/profile/keys')({
6 | component: SSHKeys,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/hooks/useGlobalErrors.ts:
--------------------------------------------------------------------------------
1 | import { useSelector } from 'react-redux';
2 |
3 | import type { ApplicationState } from 'src/store';
4 |
5 | export const useGlobalErrors = () => {
6 | return useSelector((state: ApplicationState) => state.globalErrors);
7 | };
8 |
--------------------------------------------------------------------------------
/scripts/validatePackages/sdk-esm.js:
--------------------------------------------------------------------------------
1 | // This file used by GitHub Actions (ci.yml workflow) to validate the api-v4 NPM package before publishing.
2 |
3 | import { getRegions } from '@linode/api-v4';
4 |
5 | getRegions().then(res => {
6 | console.log(res.data.length);
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/constants/tickets.ts:
--------------------------------------------------------------------------------
1 | import type { TicketSeverity } from '@linode/api-v4';
2 |
3 | export const severityLabelMap: Map = new Map([
4 | [1, '1-Major Impact'],
5 | [2, '2-Moderate Impact'],
6 | [3, '3-Low Impact'],
7 | ]);
8 |
--------------------------------------------------------------------------------
/packages/manager/src/hooks/usePendingUpload.ts:
--------------------------------------------------------------------------------
1 | import { useSelector } from 'react-redux';
2 |
3 | import type { ApplicationState } from 'src/store';
4 |
5 | export const usePendingUpload = () => {
6 | return useSelector((state: ApplicationState) => state.pendingUpload);
7 | };
8 |
--------------------------------------------------------------------------------
/packages/validation/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'tsup';
2 |
3 | export default defineConfig({
4 | entry: ['src/index.ts'],
5 | format: ['esm', 'cjs', 'iife'],
6 | target: 'es6',
7 | outDir: 'lib',
8 | splitting: false,
9 | dts: false,
10 | });
11 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13171-changed-1764924158682.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Changed
3 | ---
4 |
5 | Logs: in Stream Form limit access to "lke_audit_logs" type based on Akamai Cloud Pulse Logs LKE-E Audit capability ([#13171](https://github.com/linode/manager/pull/13171))
6 |
--------------------------------------------------------------------------------
/packages/manager/.changeset/pr-13196-fixed-1765520959220.md:
--------------------------------------------------------------------------------
1 | ---
2 | "@linode/manager": Fixed
3 | ---
4 |
5 | CloudPulse-Metrics: Update `CloudPulseDashboardFilterBuilder.tsx` to add type-check for usage of dependent filters ref ([#13196](https://github.com/linode/manager/pull/13196))
6 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Betas/betasLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { BetasLanding } from './BetasLanding';
4 |
5 | export const betasLandingLazyRoute = createLazyRoute('/betas')({
6 | component: BetasLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/types.ts:
--------------------------------------------------------------------------------
1 | import type { APIWarning } from '@linode/api-v4/lib/types';
2 | export type SetSuccess = (
3 | message: null | string,
4 | paymentWasMade?: boolean,
5 | warning?: APIWarning[]
6 | ) => void;
7 |
--------------------------------------------------------------------------------
/packages/manager/src/features/IAM/Roles/rolesLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { RolesLanding } from './Roles';
4 |
5 | export const rolesLandingLazyRoute = createLazyRoute('/iam/roles')({
6 | component: RolesLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Profile/profileLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { Profile } from 'src/features/Profile/Profile';
4 |
5 | export const ProfileLazyRoute = createLazyRoute('/profile')({
6 | component: Profile,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/ui/testSetup.ts:
--------------------------------------------------------------------------------
1 | import * as matchers from '@testing-library/jest-dom/matchers';
2 | import { cleanup } from '@testing-library/react';
3 | import { afterEach, expect } from 'vitest';
4 |
5 | expect.extend(matchers);
6 |
7 | afterEach(() => {
8 | cleanup();
9 | });
10 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/stripImageName.ts:
--------------------------------------------------------------------------------
1 | export const stripImageName = (images: (null | string)[]) => {
2 | return images.reduce((acc: string[], image) => {
3 | if (image) {
4 | acc.push(image.replace('linode/', ''));
5 | }
6 | return acc;
7 | }, []);
8 | };
9 |
--------------------------------------------------------------------------------
/scripts/validatePackages/sdk-commonjs.cjs:
--------------------------------------------------------------------------------
1 | // This file used by GitHub Actions (ci.yml workflow) to validate the api-v4 NPM package before publishing.
2 |
3 | const apiv4 = require('@linode/api-v4/lib');
4 |
5 | apiv4.getRegions().then(res => {
6 | console.log(res.data.length)
7 | })
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Account/types.ts:
--------------------------------------------------------------------------------
1 | import type { grantTypeMap } from 'src/features/Account/constants';
2 |
3 | // A useful type for getting the values of an object
4 | export type ObjectValues = T[keyof T];
5 |
6 | export type GrantTypeMap = ObjectValues;
7 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Betas/betaSignupLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { BetaSignup } from './BetaSignup';
4 |
5 | export const betaSignupLazyRoute = createLazyRoute('/betas/signup/$betaId')({
6 | component: BetaSignup,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodeCreate/Tabs/Clone/cloneLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { Clone } from './Clone';
4 |
5 | export const cloneLazyRoute = createLazyRoute('/linodes/create/clone')({
6 | component: Clone,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodeCreate/Tabs/imagesLazyRoutes.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { Images } from './Images';
4 |
5 | export const imagesLazyRoute = createLazyRoute('/linodes/create/images')({
6 | component: Images,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Profile/APITokens/apiTokensLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { APITokens } from './APITokens';
4 |
5 | export const apiTokensLazyRoute = createLazyRoute('/profile/tokens')({
6 | component: APITokens,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Quotas/quotasLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { QuotasLanding } from './QuotasLanding';
4 |
5 | export const quotasLandingLazyRoute = createLazyRoute('/quotas')({
6 | component: QuotasLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/shared/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "@linode/tsconfig/package",
4 | "@linode/tsconfig/react",
5 | "@linode/tsconfig/non-strict"
6 | ],
7 | "compilerOptions": {
8 | "types": ["@testing-library/jest-dom"]
9 | },
10 | "include": ["src"]
11 | }
12 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/capitalize.ts:
--------------------------------------------------------------------------------
1 | export const capitalize = (s: string) => {
2 | return s.charAt(0).toUpperCase() + s.slice(1);
3 | };
4 |
5 | export const capitalizeAllWords = (s: string, delimiter = ' ') => {
6 | return s.split(delimiter).map(capitalize).join(' ');
7 | };
8 |
--------------------------------------------------------------------------------
/packages/utilities/testSetup.ts:
--------------------------------------------------------------------------------
1 | import * as matchers from '@testing-library/jest-dom/matchers';
2 | import { cleanup } from '@testing-library/react';
3 | import { afterEach, expect } from 'vitest';
4 |
5 | expect.extend(matchers);
6 |
7 | afterEach(() => {
8 | cleanup();
9 | });
10 |
--------------------------------------------------------------------------------
/packages/api-v4/src/constants.ts:
--------------------------------------------------------------------------------
1 | export const API_ROOT = 'https://api.linode.com/v4';
2 | export const BETA_API_ROOT = API_ROOT + 'beta';
3 |
4 | // Value from 1-4 reflecting a minimum score from zxcvbn
5 | export const MINIMUM_PASSWORD_STRENGTH = 4;
6 |
7 | export const MAX_VOLUME_SIZE = 16384;
8 |
--------------------------------------------------------------------------------
/packages/manager/public/assets/shadowsocks.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/packages/manager/src/components/Tabs/Tabs.tsx:
--------------------------------------------------------------------------------
1 | import { Tabs as ReachTabs } from '@reach/tabs';
2 | import * as React from 'react';
3 |
4 | export const Tabs = (props: React.ComponentProps) => {
5 | const id = React.useId();
6 | return ;
7 | };
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/IAM/Users/UsersTable/usersLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { UsersLanding } from './Users';
4 |
5 | export const usersLandingLazyRoute = createLazyRoute('/iam/users')({
6 | component: UsersLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodeCreate/linodeCreateLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { LinodeCreate } from './';
4 |
5 | export const linodeCreateLazyRoute = createLazyRoute('/linodes/create')({
6 | component: LinodeCreate,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Profile/Referrals/referralsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { Referrals } from './Referrals';
4 |
5 | export const referralsLazyRoute = createLazyRoute('/profile/referrals')({
6 | component: Referrals,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Users/userDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { UserDetail } from './UserDetail';
4 |
5 | export const userDetailLazyRoute = createLazyRoute('/account/users/$username')({
6 | component: UserDetail,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Users/usersLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { UsersLanding } from './UsersLanding';
4 |
5 | export const usersLandingLazyRoute = createLazyRoute('/account/users')({
6 | component: UsersLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/ui/src/assets/icons/radio.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/ui/src/foundations/breakpoints.ts:
--------------------------------------------------------------------------------
1 | import { unstable_createBreakpoints } from '@mui/material';
2 |
3 | export const breakpoints = unstable_createBreakpoints({
4 | values: {
5 | lg: 1280,
6 | md: 960,
7 | sm: 600,
8 | xl: 1920,
9 | xs: 0,
10 | },
11 | });
12 |
--------------------------------------------------------------------------------
/packages/validation/src/longview.schema.ts:
--------------------------------------------------------------------------------
1 | import { object, string } from 'yup';
2 |
3 | export const longviewClientCreate = object().shape({
4 | label: string()
5 | .min(3, 'Label must be between 3 and 32 characters.')
6 | .max(32, 'Label must be between 3 and 32 characters.'),
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/components/Skeleton.tsx:
--------------------------------------------------------------------------------
1 | import _Skeleton from '@mui/material/Skeleton';
2 | import React from 'react';
3 |
4 | import type { SkeletonProps } from '@mui/material/Skeleton';
5 |
6 | export const Skeleton = (props: SkeletonProps) => {
7 | return <_Skeleton {...props} />;
8 | };
9 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Billing/billingDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { BillingDetail } from './BillingDetail';
4 |
5 | export const billingDetailLazyRoute = createLazyRoute('/account/billing')({
6 | component: BillingDetail,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/linodesLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { LinodesLandingWrapper } from './';
4 |
5 | export const linodesLandingLazyRoute = createLazyRoute('/linodes')({
6 | component: LinodesLandingWrapper,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/api-v4/src/object-storage/index.ts:
--------------------------------------------------------------------------------
1 | export * from './account';
2 |
3 | export * from './buckets';
4 |
5 | export * from './clusters';
6 |
7 | export * from './objects';
8 |
9 | export * from './objectStorageKeys';
10 |
11 | export * from './prices';
12 |
13 | export * from './types';
14 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Account/globalSettingsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import GlobalSettings from './GlobalSettings';
4 |
5 | export const globalSettingsLazyRoute = createLazyRoute('/account/settings')({
6 | component: GlobalSettings,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodeCreate/Tabs/Backups/backupsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { Backups } from './Backups';
4 |
5 | export const backupsLazyRoute = createLazyRoute('/linodes/create/backups')({
6 | component: Backups,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Profile/LishSettings/lishSettingsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { LishSettings } from './LishSettings';
4 |
5 | export const lishSettingsLazyRoute = createLazyRoute('/profile/lish')({
6 | component: LishSettings,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Profile/OAuthClients/oAuthClientsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import OAuthClients from './OAuthClients';
4 |
5 | export const oAuthClientsLazyRoute = createLazyRoute('/profile/clients')({
6 | component: OAuthClients,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/VPCs/VPCCreate/VPCCreateLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import VPCCreate from 'src/features/VPCs/VPCCreate/VPCCreate';
4 |
5 | export const vpcCreateLazyRoute = createLazyRoute('/vpcs/create')({
6 | component: VPCCreate,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/VPCs/VPCDetail/VPCDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import VPCDetail from 'src/features/VPCs/VPCDetail/VPCDetail';
4 |
5 | export const vpcDetailLazyRoute = createLazyRoute('/vpcs/$vpcId')({
6 | component: VPCDetail,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/VPCs/VPCLanding/VPCLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import VPCLanding from 'src/features/VPCs/VPCLanding/VPCLanding';
4 |
5 | export const vpcLandingLazyRoute = createLazyRoute('/')({
6 | component: VPCLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/ui/src/utilities/clamp.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Restricts a number to be within a range.
3 | */
4 | export function clamp(min: number, max: number, value: number) {
5 | if (value > max) {
6 | return max;
7 | }
8 | if (value < min) {
9 | return min;
10 | }
11 | return value;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/utilities/src/hooks/useFormattedDate.ts:
--------------------------------------------------------------------------------
1 | import { DateTime } from 'luxon';
2 | import { useMemo } from 'react';
3 |
4 | export const useFormattedDate = () => {
5 | return useMemo(() => {
6 | const now = DateTime.local();
7 | return now.toFormat('yyyy-MM-dd');
8 | }, []);
9 | };
10 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/constants/api.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * API OAuth token for authenticating API requests and Cloud Manager interactions.
3 | */
4 | export const oauthToken = Cypress.env('MANAGER_OAUTH');
5 |
6 | /**
7 | * API request pagination page size.
8 | */
9 | export const pageSize = 500;
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Events/eventsLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { EventsLanding } from 'src/features/Events/EventsLanding';
4 |
5 | export const eventsLandingLazyRoute = createLazyRoute('/events')({
6 | component: EventsLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/IAM/Users/UserDetails/userProfileLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { UserProfile } from './UserProfile';
4 |
5 | export const userProfileLazyRoute = createLazyRoute('/iam/users/$username')({
6 | component: UserProfile,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/IAM/iamLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { IdentityAccessLanding } from 'src/features/IAM/IAMLanding';
4 |
5 | export const iamLandingLazyRoute = createLazyRoute('/iam')({
6 | component: IdentityAccessLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Longview/LongviewDetail/DetailTabs/OverviewGraphs/types.ts:
--------------------------------------------------------------------------------
1 | export interface GraphProps {
2 | clientAPIKey: string;
3 | end: number;
4 | isToday: boolean;
5 | lastUpdated?: number;
6 | lastUpdatedError: boolean;
7 | start: number;
8 | timezone: string;
9 | }
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Search/searchLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { SearchLanding } from 'src/features/Search/SearchLanding';
4 |
5 | export const searchLandingLazyRoute = createLazyRoute('/search')({
6 | component: SearchLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Volumes/volumesLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { VolumesLanding } from 'src/features/Volumes/VolumesLanding';
4 |
5 | export const volumesLandingLazyRoute = createLazyRoute('/')({
6 | component: VolumesLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Billing/BillingLanding/billingLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { BillingLanding } from './BillingLanding';
4 |
5 | export const billingLandingLazyRoute = createLazyRoute('/billing')({
6 | component: BillingLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/linodeDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { LinodeDetail } from './LinodesDetail';
4 |
5 | export const linodeDetailLazyRoute = createLazyRoute('/linodes/$linodeId')({
6 | component: LinodeDetail,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Lish/lishUtils.ts:
--------------------------------------------------------------------------------
1 | export const lishLaunch = (linodeId: number) => {
2 | window.open(
3 | `${window.location.protocol}//${window.location.host}/linodes/${linodeId}/lish/weblish`,
4 | `weblish_con_${linodeId}`,
5 | 'width=1080,height=730,toolbar=0,resizable=1'
6 | );
7 | };
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Volumes/volumesCreateLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { VolumeCreate } from 'src/features/Volumes/VolumeCreate';
4 |
5 | export const volumeCreateLazyRoute = createLazyRoute('/volumes/create')({
6 | component: VolumeCreate,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/ui/src/utilities/stringUtils.ts:
--------------------------------------------------------------------------------
1 | export const convertForAria = (str: string) => {
2 | return (
3 | str
4 | .trim()
5 | .toLowerCase()
6 | // eslint-disable-next-line sonarjs/slow-regex
7 | .replace(/([^A-Z0-9]+)(.)/gi, (match, p1, p2) => p2.toUpperCase())
8 | );
9 | };
10 |
--------------------------------------------------------------------------------
/packages/manager/cypress/fixtures/stackscripts/stackscript-udf-invalid.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # This is a StackScript with an invalid user-defined field to test
3 | # StackScript validation/error messages.
4 |
5 | #
6 |
7 | echo "Hello, world!"
8 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/ui/app-bar.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * UI helpers for Cloud Manager top app bar.
3 | */
4 | export const appBar = {
5 | /**
6 | * Finds the app bar.
7 | *
8 | * @returns Cypress chainable.
9 | */
10 | find: () => {
11 | return cy.get('[data-qa-appbar]');
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/packages/manager/public/assets/white/saltcorn.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/src/__data__/ExtendedType.ts:
--------------------------------------------------------------------------------
1 | import { extendType } from 'src/utilities/extendType';
2 | import types from 'src/utilities/types.json';
3 |
4 | import type { LinodeType } from '@linode/api-v4';
5 |
6 | const _types = types.data as LinodeType[];
7 |
8 | export const extendedTypes = _types.map(extendType);
9 |
--------------------------------------------------------------------------------
/packages/manager/src/components/CheckoutBar/styles.ts:
--------------------------------------------------------------------------------
1 | import { useTheme } from '@mui/material/styles';
2 |
3 | export const SxTypography = () => {
4 | const theme = useTheme();
5 |
6 | return {
7 | color: theme.color.headline,
8 | fontSize: '.8rem',
9 | lineHeight: '1.5em',
10 | };
11 | };
12 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Account/accountLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { AccountLanding } from 'src/features/Account/AccountLanding';
4 |
5 | export const accountLandingLazyRoute = createLazyRoute('/account')({
6 | component: AccountLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Domains/domainsLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DomainsLanding } from 'src/features/Domains/DomainsLanding';
4 |
5 | export const domainsLandingLazyRoute = createLazyRoute('/domains')({
6 | component: DomainsLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/IAM/Roles/Defaults/defaultsLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DefaultsLanding } from './DefaultsLanding';
4 |
5 | export const defaultsLandingLazyRoute = createLazyRoute('/iam/roles/')({
6 | component: DefaultsLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Managed/managedLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { ManagedLanding } from 'src/features/Managed/ManagedLanding';
4 |
5 | export const managedLandingLazyRoute = createLazyRoute('/managed')({
6 | component: ManagedLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/UsersAndGrants/usersAndGrantsLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { UsersAndGrants } from './UsersAndGrants';
4 |
5 | export const usersAndGrantsLandingLazyRoute = createLazyRoute('/users')({
6 | component: UsersAndGrants,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Volumes/VolumeDetails/volumeDetailsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { VolumeDetails } from './VolumeDetails';
4 |
5 | export const volumeDetailsLazyRoute = createLazyRoute('/volumes/$volumeId')({
6 | component: VolumeDetails,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/nullOrUndefined.ts:
--------------------------------------------------------------------------------
1 | export const isNullOrUndefined = (
2 | value: unknown,
3 | ): value is null | undefined => {
4 | return value === null || value === undefined;
5 | };
6 |
7 | export const isNotNullOrUndefined = (el: null | T | undefined): el is T =>
8 | !isNullOrUndefined(el);
9 |
--------------------------------------------------------------------------------
/packages/manager/cypress/fixtures/user-data/user-data-config-basic.yml:
--------------------------------------------------------------------------------
1 | #cloud-config
2 |
3 | # Sample cloud-init config data file.
4 | # See also: https://cloudinit.readthedocs.io/en/latest/explanation/format.html
5 |
6 | groups:
7 | - foo-group
8 |
9 | users:
10 | - name: foo
11 | primary_group: foo-group
12 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Databases/DatabaseCreate/databaseCreateLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DatabaseCreate } from './DatabaseCreate';
4 |
5 | export const databaseCreateLazyRoute = createLazyRoute('/databases/create')({
6 | component: DatabaseCreate,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/VPCs/VPCDetail/SubnetLinodeRow.styles.ts:
--------------------------------------------------------------------------------
1 | import { WarningIcon } from '@linode/ui';
2 | import { styled } from '@mui/material/styles';
3 |
4 | export const StyledWarningIcon = styled(WarningIcon, {
5 | label: 'StyledWarningIcon',
6 | })(({ theme }) => ({
7 | fill: theme.color.yellow,
8 | }));
9 |
--------------------------------------------------------------------------------
/packages/manager/src/assets/icons/credit-card.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/src/context/complianceUpdateContext.ts:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 |
3 | import { defaultContext } from './useDialogContext';
4 |
5 | import type { DialogContextProps } from './useDialogContext';
6 |
7 | export const complianceUpdateContext =
8 | React.createContext(defaultContext);
9 |
--------------------------------------------------------------------------------
/packages/manager/src/context/sessionExpirationContext.ts:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 |
3 | import { defaultContext } from './useDialogContext';
4 |
5 | import type { DialogContextProps } from './useDialogContext';
6 |
7 | export const sessionExpirationContext =
8 | React.createContext(defaultContext);
9 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Account/accountLoginsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import AccountLogins from './AccountLogins';
4 |
5 | export const accountLoginsLazyRoute = createLazyRoute('/account/login-history')(
6 | {
7 | component: AccountLogins,
8 | }
9 | );
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Delivery/deliveryLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DeliveryLanding } from 'src/features/Delivery/DeliveryLanding';
4 |
5 | export const deliveryLandingLazyRoute = createLazyRoute('/logs/delivery')({
6 | component: DeliveryLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Firewalls/FirewallDetail/Devices/constants.ts:
--------------------------------------------------------------------------------
1 | import type { FirewallDeviceEntityType } from '@linode/api-v4';
2 |
3 | export const formattedTypes: Record = {
4 | linode_interface: 'Linode Interface',
5 | linode: 'Linode',
6 | nodebalancer: 'NodeBalancer',
7 | };
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/IAM/Users/UserRoles/userRolesLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { UserRoles } from './UserRoles';
4 |
5 | export const userRolesLazyRoute = createLazyRoute('/iam/users/$username/roles')(
6 | {
7 | component: UserRoles,
8 | }
9 | );
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Longview/LongviewLanding/Gauges/common.ts:
--------------------------------------------------------------------------------
1 | import type { APIError } from '@linode/api-v4/lib/types';
2 |
3 | export const baseGaugeProps = {
4 | height: 110,
5 | width: '100%',
6 | };
7 |
8 | export interface BaseProps {
9 | clientID: number;
10 | lastUpdatedError?: APIError[];
11 | }
12 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Managed/SSHAccess/SSHAccessTable.styles.tsx:
--------------------------------------------------------------------------------
1 | import { styled } from '@mui/material/styles';
2 |
3 | export const StyledDiv = styled('div', {
4 | label: 'StyledDiv',
5 | })(({ theme }) => ({
6 | '&:before': {
7 | display: 'none',
8 | },
9 | marginTop: theme.spacing(4),
10 | }));
11 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Profile/DisplaySettings/displaySettingsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DisplaySettings } from './DisplaySettings';
4 |
5 | export const displaySettingsLazyRoute = createLazyRoute('/profile/display')({
6 | component: DisplaySettings,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/store/selectors/getAbuseTicket.ts:
--------------------------------------------------------------------------------
1 | import type { Notification } from '@linode/api-v4/lib/account';
2 |
3 | export const getAbuseTickets = (notifications: Notification[]) => {
4 | return notifications.filter(
5 | (thisNotification: Notification) => thisNotification.type === 'ticket_abuse'
6 | );
7 | };
8 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/tail.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Returns all elements of an array except the first one.
3 | * @param array The input array.
4 | * @returns An array with all elements of the input array except the first one.
5 | */
6 |
7 | export function tail(array: T[]): T[] {
8 | return array.slice(1);
9 | }
10 |
--------------------------------------------------------------------------------
/packages/manager/public/assets/nomad.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/src/assets/weblish/weblish.css:
--------------------------------------------------------------------------------
1 | body {
2 | background-color: black !important;
3 | }
4 |
5 | #terminal {
6 | margin: 0;
7 | padding: 0;
8 | background-color: #000;
9 | background-size: 10px 10px;
10 | background-position: 0 0, 5px 5px;
11 | }
12 |
13 | canvas {
14 | margin: unset !important;
15 | }
--------------------------------------------------------------------------------
/packages/manager/src/context/switchAccountSessionContext.ts:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 |
3 | import { defaultContext } from './useDialogContext';
4 |
5 | import type { DialogContextProps } from './useDialogContext';
6 |
7 | export const switchAccountSessionContext =
8 | React.createContext(defaultContext);
9 |
--------------------------------------------------------------------------------
/packages/manager/src/features/IAM/Delegations/delegationsLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { AccountDelegations } from './AccountDelegations';
4 |
5 | export const delegationsLandingLazyRoute = createLazyRoute('/iam/delegations')({
6 | component: AccountDelegations,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/LoginHistory/loginHistoryLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { LoginHistoryLanding } from './LoginHistoryLanding';
4 |
5 | export const loginHistoryLandingLazyRoute = createLazyRoute('/login-history')({
6 | component: LoginHistoryLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/ObjectStorage/AccessKeyLanding/types.ts:
--------------------------------------------------------------------------------
1 | import type { ObjectStorageKey } from '@linode/api-v4/lib/object-storage/types';
2 |
3 | export type MODE = 'creating' | 'editing' | 'viewing';
4 |
5 | export type OpenAccessDrawer = (
6 | mode: MODE,
7 | objectStorageKey?: null | ObjectStorageKey
8 | ) => void;
9 |
--------------------------------------------------------------------------------
/packages/manager/src/utilities/promoUtils.ts:
--------------------------------------------------------------------------------
1 | import { parseAPIDate } from 'src/utilities/date';
2 |
3 | export const expiresInDays = (time: string) => {
4 | if (!time) {
5 | return null;
6 | }
7 | // Adding a day here to match how the API calculates this.
8 | return parseAPIDate(time).diffNow().days + 1;
9 | };
10 |
--------------------------------------------------------------------------------
/packages/manager/public/assets/nomadocc.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/public/assets/white/nomad.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/public/assets/white/nomadocc.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Domains/CreateDomain/createDomainLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { CreateDomain } from 'src/features/Domains/CreateDomain/CreateDomain';
4 |
5 | export const createDomainLazyRoute = createLazyRoute('/domains/create')({
6 | component: CreateDomain,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/IAM/Roles/Defaults/defaultRolesLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DefaultRoles } from './DefaultRoles';
4 |
5 | export const defaultRolesLazyRoute = createLazyRoute(
6 | '/iam/roles/defaults/roles'
7 | )({
8 | component: DefaultRoles,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Images/ImagesLanding/imagesLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { ImagesLanding } from 'src/features/Images/ImagesLanding/ImagesLanding';
4 |
5 | export const imagesLandingLazyRoute = createLazyRoute('/images')({
6 | component: ImagesLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/CloneLanding/cloneLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { CloneLanding } from './CloneLanding';
4 |
5 | export const cloneLandingLazyRoute = createLazyRoute(
6 | '/linodes/$linodeId/clone'
7 | )({
8 | component: CloneLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Longview/LongviewDetail/DetailTabs/Processes/ProcessesTable.styles.tsx:
--------------------------------------------------------------------------------
1 | import { styled } from '@mui/material/styles';
2 |
3 | export const StyledDiv = styled('div', { label: 'StyledDiv' })({
4 | alignItems: 'center',
5 | display: 'flex',
6 | flexFlow: 'row nowrap',
7 | wordBreak: 'break-all',
8 | });
9 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Longview/__mocks__/request.ts:
--------------------------------------------------------------------------------
1 | export const get = vi.fn().mockResolvedValue({ DATA: {} });
2 | export const getLastUpdated = vi.fn().mockResolvedValue(0);
3 | export const getValues = vi.fn().mockResolvedValue({});
4 | export const handleLongviewResponse = vi.fn().mockResolvedValue({});
5 | export default get;
6 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/isNilOrEmpty.ts:
--------------------------------------------------------------------------------
1 | export const isNilOrEmpty = (v: null | number | object | string | undefined) =>
2 | v === null ||
3 | v === undefined ||
4 | v === '' ||
5 | (typeof v === 'object' &&
6 | (v instanceof Set || v instanceof Map
7 | ? v.size === 0
8 | : Object.keys(v || {}).length === 0));
9 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/ui/tooltip.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Tooltip UI helper.
3 | */
4 | export const tooltip = {
5 | /**
6 | * Finds a tooltip that has the given text.
7 | */
8 | findByText: (text: string): Cypress.Chainable => {
9 | return cy.document().its('body').find(`[data-qa-tooltip="${text}"]`);
10 | },
11 | };
12 |
--------------------------------------------------------------------------------
/packages/manager/public/assets/nomadclientsocc.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/src/OAuth/Logout.tsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect } from 'react';
2 |
3 | import { SplashScreen } from 'src/components/SplashScreen';
4 | import { logout } from 'src/OAuth/oauth';
5 |
6 | export const Logout = () => {
7 | useEffect(() => {
8 | logout();
9 | }, []);
10 |
11 | return ;
12 | };
13 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Domains/DomainDetail/domainDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DomainDetail } from 'src/features/Domains/DomainDetail/DomainDetail';
4 |
5 | export const domainDetailLazyRoute = createLazyRoute('/domains/$domainId')({
6 | component: DomainDetail,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Firewalls/FirewallDetail/firewallDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { FirewallDetail } from 'src/features/Firewalls/FirewallDetail';
4 |
5 | export const firewallDetailLazyRoute = createLazyRoute('/firewalls/$id')({
6 | component: FirewallDetail,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/IAM/Users/UserEntities/userEntitiesLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { UserEntities } from './UserEntities';
4 |
5 | export const userEntitiesLazyRoute = createLazyRoute(
6 | '/iam/users/$username/entities'
7 | )({
8 | component: UserEntities,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/queries/src/account/notifications.ts:
--------------------------------------------------------------------------------
1 | import { useQuery } from '@tanstack/react-query';
2 |
3 | import { accountQueries } from './queries';
4 |
5 | import type { APIError, Notification } from '@linode/api-v4';
6 |
7 | export const useNotificationsQuery = () =>
8 | useQuery(accountQueries.notifications);
9 |
--------------------------------------------------------------------------------
/packages/manager/public/assets/white/nomadclientsocc.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/src/assets/icons/caret_down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/LinodeAlerts/linodeAlertsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import LinodeAlerts from './LinodeAlerts';
4 |
5 | export const linodeAlertsLazyRoute = createLazyRoute(
6 | '/linodes/$linodeId/alerts'
7 | )({
8 | component: LinodeAlerts,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/ObjectStorage/BucketLanding/StylesBucketIcon.ts:
--------------------------------------------------------------------------------
1 | import { styled } from '@mui/material/styles';
2 |
3 | import StorageIcon from 'src/assets/icons/entityIcons/storage.svg';
4 |
5 | const StyledBucketIcon = styled(StorageIcon)(() => ({
6 | transform: 'scale(0.80)',
7 | }));
8 |
9 | export { StyledBucketIcon };
10 |
--------------------------------------------------------------------------------
/packages/manager/src/utilities/charts.ts:
--------------------------------------------------------------------------------
1 | import { defaults as chartDefaults } from 'chart.js';
2 |
3 | export const setUpCharts = () => {
4 | (chartDefaults as any).global.defaultFontFamily = '"Nunito Sans", sans-serif';
5 | (chartDefaults as any).global.defaultFontStyle = '700';
6 | (chartDefaults as any).global.defaultFontSize = 13;
7 | };
8 |
--------------------------------------------------------------------------------
/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vitest/config";
2 |
3 | export default defineConfig({
4 | test: {
5 | projects: [
6 | "packages/api-v4",
7 | "packages/manager",
8 | "packages/search",
9 | "packages/shared",
10 | "packages/ui",
11 | "packages/utilities",
12 | ],
13 | },
14 | });
15 |
--------------------------------------------------------------------------------
/packages/manager/src/factories/accountAgreements.ts:
--------------------------------------------------------------------------------
1 | import { Factory } from '@linode/utilities';
2 |
3 | import type { Agreements } from '@linode/api-v4/lib/account';
4 |
5 | export const accountAgreementsFactory = Factory.Sync.makeFactory({
6 | billing_agreement: false,
7 | eu_model: false,
8 | privacy_policy: true,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Firewalls/FirewallLanding/firewallLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import FirewallLanding from 'src/features/Firewalls/FirewallLanding/FirewallLanding';
4 |
5 | export const firewallLandingLazyRoute = createLazyRoute('/firewalls')({
6 | component: FirewallLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Kubernetes/CreateCluster/createClusterLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { CreateCluster } from 'src/features/Kubernetes/CreateCluster/CreateCluster';
4 |
5 | export const createClusterLazyRoute = createLazyRoute('/kubernetes/create')({
6 | component: CreateCluster,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodeCreate/Tabs/Marketplace/marketPlaceLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { Marketplace } from './Marketplace';
4 |
5 | export const marketPlaceLazyRoute = createLazyRoute(
6 | '/linodes/create/marketplace'
7 | )({
8 | component: Marketplace,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Longview/LongviewLanding/longviewLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import LongviewLanding from 'src/features/Longview/LongviewLanding/LongviewLanding';
4 |
5 | export const longviewLandingLazyRoute = createLazyRoute('/longview')({
6 | component: LongviewLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Maintenance/maintenanceLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { MaintenanceLanding } from './MaintenanceLanding';
4 |
5 | export const maintenanceLandingLandingLazyRoute = createLazyRoute(
6 | '/maintenance'
7 | )({
8 | component: MaintenanceLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/UsersAndGrants/usersAndGrantsUserProfileLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { UserDetail } from '../Users/UserDetail';
4 |
5 | export const usersAndGrantsUserProfileLazyRoute = createLazyRoute(
6 | '/users/$username'
7 | )({
8 | component: UserDetail,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/types/index.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Necessary for ES6 import of svg/png files, else we would have to require() them.
3 | *
4 | * @see https://github.com/Microsoft/TypeScript-React-Starter/issues/12#issuecomment-326370098
5 | */
6 | declare module '*.png';
7 | declare module 'eslint-plugin-cypress/flat';
8 | declare module 'eslint-plugin-xss';
9 |
--------------------------------------------------------------------------------
/packages/queries/src/linodes/index.ts:
--------------------------------------------------------------------------------
1 | export * from './actions';
2 | export * from './backups';
3 | export * from './configs';
4 | export * from './disks';
5 | export * from './firewalls';
6 | export * from './interfaces';
7 | export * from './linodes';
8 | export * from './networking';
9 | export * from './requests';
10 | export * from './stats';
11 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/getUserTimezone.ts:
--------------------------------------------------------------------------------
1 | import { DateTime, IANAZone } from 'luxon';
2 |
3 | export const getUserTimezone = (profileTimezone?: string) => {
4 | return profileTimezone &&
5 | profileTimezone !== '' &&
6 | IANAZone.isValidZone(profileTimezone)
7 | ? profileTimezone
8 | : DateTime.local().zoneName;
9 | };
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Account/Maintenance/maintenanceLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import MaintenanceLanding from './MaintenanceLanding';
4 |
5 | export const maintenanceLandingLazyRoute = createLazyRoute(
6 | '/account/maintenance'
7 | )({
8 | component: MaintenanceLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Databases/DatabaseLanding/databaseLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DatabaseLanding } from 'src/features/Databases/DatabaseLanding/DatabaseLanding';
4 |
5 | export const databaseLandingLazyRoute = createLazyRoute('/databases')({
6 | component: DatabaseLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodeCreate/Tabs/StackScripts/stackScriptsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { StackScripts } from './StackScripts';
4 |
5 | export const stackScriptsLazyRoute = createLazyRoute(
6 | '/linodes/create/stackscripts'
7 | )({
8 | component: StackScripts,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/LinodeBackup/linodeBackupsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { LinodeBackups } from './LinodeBackups';
4 |
5 | export const linodeBackupsLazyRoute = createLazyRoute(
6 | '/linodes/$linodeId/backup'
7 | )({
8 | component: LinodeBackups,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/LinodeMetrics/linodeMetricsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import LinodeMetrics from './LinodeMetrics';
4 |
5 | export const linodeMetricsLazyRoute = createLazyRoute(
6 | '/linodes/$linodeId/metrics'
7 | )({
8 | component: LinodeMetrics,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/LinodeStorage/linodeStorageLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { LinodeStorage } from './LinodeStorage';
4 |
5 | export const linodeStorageLazyRoute = createLazyRoute(
6 | '/linodes/$linodeId/storage'
7 | )({
8 | component: LinodeStorage,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Longview/LongviewDetail/LongviewDetail.styles.ts:
--------------------------------------------------------------------------------
1 | import { styled } from '@mui/material/styles';
2 |
3 | import { Tabs } from 'src/components/Tabs/Tabs';
4 |
5 | export const StyledTabs = styled(Tabs, { label: 'StyledTabs' })(
6 | ({ theme }) => ({
7 | marginBottom: `calc(${theme.spacing(3)} + 6px)`,
8 | })
9 | );
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Volumes/VolumeDetails/VolumeMetrics/volumeMetricsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { VolumeMetrics } from './VolumeMetrics';
4 |
5 | export const volumeMetricsLazyRoute = createLazyRoute(
6 | '/volumes/$volumeId/metrics'
7 | )({
8 | component: VolumeMetrics,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Volumes/VolumeDetails/VolumeSummary/volumeSummaryLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { VolumeSummary } from './VolumeSummary';
4 |
5 | export const volumeSummaryLazyRoute = createLazyRoute(
6 | '/volumes/$volumeId/summary'
7 | )({
8 | component: VolumeSummary,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/api-v4/src/linodes/index.ts:
--------------------------------------------------------------------------------
1 | export * from './actions';
2 |
3 | export * from './backups';
4 |
5 | export * from './configs';
6 |
7 | export * from './disks';
8 |
9 | export * from './info';
10 |
11 | export * from './ips';
12 |
13 | export * from './linode-interfaces';
14 |
15 | export * from './linodes';
16 |
17 | export * from './types';
18 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Images/ImagesCreate/imagesCreateLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { ImagesCreateContainer } from 'src/features/Images/ImagesCreate/ImageCreateContainer';
4 |
5 | export const imageCreateLazyRoute = createLazyRoute('/images/create')({
6 | component: ImagesCreateContainer,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/HostMaintenanceError.tsx:
--------------------------------------------------------------------------------
1 | import { Notice } from '@linode/ui';
2 | import * as React from 'react';
3 |
4 | export const HostMaintenanceError = () => (
5 |
9 | );
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/LinodeActivity/linodeActivityLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import LinodeActivity from './LinodeActivity';
4 |
5 | export const linodeActivityLazyRoute = createLazyRoute(
6 | '/linodes/$linodeId/activity'
7 | )({
8 | component: LinodeActivity,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/LinodeConfigs/linodeConfigsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import LinodeConfigs from './LinodeConfigs';
4 |
5 | export const linodeConfigsLazyRoute = createLazyRoute(
6 | '/linodes/$linodeId/configurations'
7 | )({
8 | component: LinodeConfigs,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/LinodeSettings/linodeSettingsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import LinodeSettings from './LinodeSettings';
4 |
5 | export const linodeSettingsLazyRoute = createLazyRoute(
6 | '/linodes/$linodeId/settings'
7 | )({
8 | component: LinodeSettings,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/queries/src/account/transfer.ts:
--------------------------------------------------------------------------------
1 | import { useQuery } from '@tanstack/react-query';
2 |
3 | import { accountQueries } from './queries';
4 |
5 | import type { APIError, RegionalNetworkUtilization } from '@linode/api-v4';
6 |
7 | export const useAccountNetworkTransfer = () =>
8 | useQuery(accountQueries.transfer);
9 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/escapeRegExp.ts:
--------------------------------------------------------------------------------
1 | // Escape a string for use with the RegExp constructor.
2 | // This function comes from the MDN documentation.
3 | // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
4 | export const escapeRegExp = (s: string) => {
5 | return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
6 | };
7 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Billing/BillingLanding/invoiceDetailsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { InvoiceDetail } from '../InvoiceDetail/InvoiceDetail';
4 |
5 | export const invoiceDetailsLazyRoute = createLazyRoute(
6 | '/billing/invoices/$invoiceId'
7 | )({
8 | component: InvoiceDetail,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/CloudPulse/Alerts/AlertsListing/cloudPulseAlertsLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { AlertListing } from './AlertListing';
4 |
5 | export const cloudPulseAlertsLandingLazyRoute = createLazyRoute(
6 | '/alerts/definitions'
7 | )({
8 | component: AlertListing,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/IAM/Users/UserDelegations/userDelegationsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { UserDelegations } from './UserDelegations';
4 |
5 | export const userDelegationsLazyRoute = createLazyRoute(
6 | '/iam/users/$username/delegations'
7 | )({
8 | component: UserDelegations,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/ui/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import svgr from 'vite-plugin-svgr';
2 | import { defineConfig } from 'vitest/config';
3 |
4 | export default defineConfig({
5 | plugins: [
6 | svgr({ svgrOptions: { exportType: 'default' }, include: '**/*.svg' }),
7 | ],
8 | test: {
9 | environment: 'jsdom',
10 | setupFiles: './testSetup.ts',
11 | },
12 | });
13 |
--------------------------------------------------------------------------------
/packages/api-v4/src/object-storage/account.ts:
--------------------------------------------------------------------------------
1 | import { API_ROOT } from '../constants';
2 | import Request, { setMethod, setURL } from '../request';
3 |
4 | /**
5 | * cancelObjectStorage
6 | *
7 | * Cancels Object Storage service
8 | */
9 | export const cancelObjectStorage = () =>
10 | Request<{}>(setMethod('POST'), setURL(`${API_ROOT}/object-storage/cancel`));
11 |
--------------------------------------------------------------------------------
/packages/manager/src/assets/icons/caret_right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/src/features/IAM/Users/userDetailsLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { UserDetailsLanding } from 'src/features/IAM/Users/UserDetailsLanding';
4 |
5 | export const userDetailsLandingLazyRoute = createLazyRoute(
6 | '/iam/users/$username'
7 | )({
8 | component: UserDetailsLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodeCreate/Tabs/operatingSystemsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { OperatingSystems } from 'src/features/Linodes/LinodeCreate/Tabs/OperatingSystems';
4 |
5 | export const operatingSystemsLazyRoute = createLazyRoute('/linodes/create/os')({
6 | component: OperatingSystems,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/ui/src/assets/icons/plusSign.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/packages/manager/src/features/AccountSettings/accountSettingsLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { AccountSettingsLanding } from './AccountSettingsLanding';
4 |
5 | export const accountSettingsLandingLazyRoute = createLazyRoute(
6 | '/account-settings'
7 | )({
8 | component: AccountSettingsLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Databases/DatabaseDetail/DatabaseResize/databaseResizeLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DatabaseResize } from './DatabaseResize';
4 |
5 | export const databaseResizeLazyRoute = createLazyRoute(
6 | '/databases/$engine/$databaseId/resize'
7 | )({
8 | component: DatabaseResize,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Databases/DatabaseDetail/databaseDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DatabaseDetail } from 'src/features/Databases/DatabaseDetail';
4 |
5 | export const databaseDetailLazyRoute = createLazyRoute(
6 | '/databases/$engine/$databaseId'
7 | )({
8 | component: DatabaseDetail,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/IAM/Roles/Defaults/defaultEntityAccessLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DefaultEntityAccess } from './DefaultEntityAccess';
4 |
5 | export const defaultEntityAccessLazyRoute = createLazyRoute(
6 | '/iam/roles/defaults/entity-access'
7 | )({
8 | component: DefaultEntityAccess,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/NodeBalancers/nodeBalancersCreateLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import NodeBalancerCreate from 'src/features/NodeBalancers/NodeBalancerCreate';
4 |
5 | export const nodeBalancerCreateLazyRoute = createLazyRoute(
6 | '/nodebalancers/create'
7 | )({
8 | component: NodeBalancerCreate,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/mocks/presets/crud/quotas.ts:
--------------------------------------------------------------------------------
1 | import { getQuotas, getS3Endpoint } from './handlers/quotas';
2 |
3 | import type { MockPresetCrud } from 'src/mocks/types';
4 |
5 | export const quotasCrudPreset: MockPresetCrud = {
6 | group: { id: 'Quotas' },
7 | handlers: [getQuotas, getS3Endpoint],
8 | id: 'quotas:crud',
9 | label: 'Quotas CRUD',
10 | };
11 |
--------------------------------------------------------------------------------
/packages/shared/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import svgr from 'vite-plugin-svgr';
2 | import { defineConfig } from 'vitest/config';
3 |
4 | export default defineConfig({
5 | plugins: [
6 | svgr({ svgrOptions: { exportType: 'default' }, include: '**/*.svg' }),
7 | ],
8 |
9 | test: {
10 | environment: 'jsdom',
11 | setupFiles: './testSetup.ts',
12 | },
13 | });
14 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/ui/file-upload.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * File upload input element.
3 | */
4 | export const fileUpload = {
5 | /**
6 | * Finds the file upload input element and returns the Cypresss chainable.
7 | *
8 | * @returns Cypress chainable.
9 | */
10 | find: (): Cypress.Chainable => {
11 | return cy.get('input[type="file"]');
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/LinodeNetworking/liondeNetworkingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { LinodeNetworking } from './LinodeNetworking';
4 |
5 | export const linodeNetworkingLazyRoute = createLazyRoute(
6 | '/linodes/$linodeId/networking'
7 | )({
8 | component: LinodeNetworking,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/ServiceTransfers/serviceTransfersLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { ServiceTransfersLanding } from './ServiceTransfersLanding';
4 |
5 | export const serviceTransfersLandingLazyRoute = createLazyRoute(
6 | '/service-transfers'
7 | )({
8 | component: ServiceTransfersLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Support/SupportTicketDetail/supportTicketDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { SupportTicketDetail } from './SupportTicketDetail';
4 |
5 | export const supportTicketDetailLazyRoute = createLazyRoute(
6 | '/support/tickets/$ticketId'
7 | )({
8 | component: SupportTicketDetail,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/mocks/presets/crud/entities.ts:
--------------------------------------------------------------------------------
1 | import { getEntities } from 'src/mocks/presets/crud/handlers/entities';
2 |
3 | import type { MockPresetCrud } from 'src/mocks/types';
4 |
5 | export const entityCrudPreset: MockPresetCrud = {
6 | group: { id: 'Entities' },
7 | handlers: [getEntities],
8 | id: 'entities:crud',
9 | label: 'Entities CRUD',
10 | };
11 |
--------------------------------------------------------------------------------
/packages/manager/src/routes/auth/AuthRoute.tsx:
--------------------------------------------------------------------------------
1 | import { Outlet } from '@tanstack/react-router';
2 | import React from 'react';
3 |
4 | import { SuspenseLoader } from 'src/components/SuspenseLoader';
5 |
6 | export const AuthRoute = () => {
7 | return (
8 | }>
9 |
10 |
11 | );
12 | };
13 |
--------------------------------------------------------------------------------
/packages/ui/src/foundations/keyframes.ts:
--------------------------------------------------------------------------------
1 | import { keyframes } from 'tss-react';
2 |
3 | export const rotate360 = keyframes`
4 | from {
5 | transform: rotate(0deg);
6 | }
7 | to {
8 | transform: rotate(360deg);
9 | }
10 | `;
11 |
12 | export const fadeIn = keyframes`
13 | from {
14 | opacity: 0;
15 | },
16 | to {
17 | opacity: 1;
18 | }
19 | `;
20 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/env.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Helps you parse an environment variable that is intended to be a boolean.
3 | */
4 | export function getBooleanEnv(value: boolean | string | undefined) {
5 | if (value === undefined) {
6 | return undefined;
7 | }
8 | if (value === true || value === 'true') {
9 | return true;
10 | }
11 | return false;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Databases/DatabaseDetail/DatabaseBackups/databaseBackupsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DatabaseBackups } from './DatabaseBackups';
4 |
5 | export const databaseBackupsLazyRoute = createLazyRoute(
6 | '/databases/$engine/$databaseId/backups'
7 | )({
8 | component: DatabaseBackups,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Databases/DatabaseDetail/DatabaseMonitor/databaseMonitorLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DatabaseMonitor } from './DatabaseMonitor';
4 |
5 | export const databaseMonitorLazyRoute = createLazyRoute(
6 | '/databases/$engine/$databaseId/metrics'
7 | )({
8 | component: DatabaseMonitor,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Databases/DatabaseDetail/DatabaseSummary/databaseSummaryLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DatabaseSummary } from './DatabaseSummary';
4 |
5 | export const databaseSummaryLazyRoute = createLazyRoute(
6 | '/databases/$engine/$databaseId/summary'
7 | )({
8 | component: DatabaseSummary,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Delivery/Streams/StreamForm/streamCreateLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { StreamCreate } from 'src/features/Delivery/Streams/StreamForm/StreamCreate';
4 |
5 | export const streamCreateLazyRoute = createLazyRoute(
6 | '/logs/delivery/streams/create'
7 | )({
8 | component: StreamCreate,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Delivery/Streams/StreamForm/streamEditLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { StreamEdit } from 'src/features/Delivery/Streams/StreamForm/StreamEdit';
4 |
5 | export const streamEditLazyRoute = createLazyRoute(
6 | '/logs/delivery/streams/$streamId/edit'
7 | )({
8 | component: StreamEdit,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Events/factories/profile.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 |
3 | import type { PartialEventMap } from '../types';
4 |
5 | export const profile: PartialEventMap<'profile'> = {
6 | profile_update: {
7 | notification: (e) => (
8 | <>
9 | Your profile has been updated.
10 | >
11 | ),
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Longview/LongviewLanding/__mocks__/LongviewClientRow.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 |
3 | interface Props {
4 | clientLabel: string;
5 | }
6 |
7 | export const LongviewClientRowMock = ({ clientLabel }: Props) => {
8 | return {clientLabel}
;
9 | };
10 |
11 | export default LongviewClientRowMock;
12 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Managed/Monitors/MonitorTable.styles.tsx:
--------------------------------------------------------------------------------
1 | import Grid from '@mui/material/Grid';
2 | import { styled } from '@mui/material/styles';
3 |
4 | export const StyledGrid = styled(Grid, {
5 | label: 'StyledGrid',
6 | })(({ theme }) => ({
7 | marginBottom: 5,
8 | [theme.breakpoints.down('md')]: {
9 | marginRight: theme.spacing(),
10 | },
11 | }));
12 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Profile/AuthenticationSettings/authenicationSettingsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { AuthenticationSettings } from './AuthenticationSettings';
4 |
5 | export const authenticationSettingsLazyRoute = createLazyRoute('/profile/auth')(
6 | {
7 | component: AuthenticationSettings,
8 | }
9 | );
10 |
--------------------------------------------------------------------------------
/packages/manager/src/routes/events/EventsRoute.tsx:
--------------------------------------------------------------------------------
1 | import { Outlet } from '@tanstack/react-router';
2 | import React from 'react';
3 |
4 | import { SuspenseLoader } from 'src/components/SuspenseLoader';
5 |
6 | export const EventsRoute = () => {
7 | return (
8 | }>
9 |
10 |
11 | );
12 | };
13 |
--------------------------------------------------------------------------------
/packages/manager/src/vite.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * We set any svg import to be a default export of a React component.
3 | *
4 | * We do this because Vite's default is for the type to be a `string`,
5 | * but we use `vite-plugin-svgr` to allow us to import svgs as components.
6 | */
7 | declare module '*.svg' {
8 | const src: ComponentClass;
9 | export default src;
10 | }
11 |
--------------------------------------------------------------------------------
/packages/manager/src/components/FormGroup.tsx:
--------------------------------------------------------------------------------
1 | import { default as _FormGroup } from '@mui/material/FormGroup';
2 | import React from 'react';
3 |
4 | import type { FormGroupProps } from '@mui/material/FormGroup';
5 |
6 | /**
7 | * A `` groups many inputs.
8 | */
9 | export const FormGroup = (props: FormGroupProps) => {
10 | return <_FormGroup {...props} />;
11 | };
12 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Databases/DatabaseDetail/DatabaseSettings/databaseSettingsLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DatabaseSettings } from './DatabaseSettings';
4 |
5 | export const databaseSettingsLazyRoute = createLazyRoute(
6 | '/databases/$engine/$databaseId/settings'
7 | )({
8 | component: DatabaseSettings,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/ObjectStorage/objectStorageLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { ObjectStorageLanding } from 'src/features/ObjectStorage/ObjectStorageLanding';
4 |
5 | export const objectStorageLandingLazyRoute = createLazyRoute('/object-storage')(
6 | {
7 | component: ObjectStorageLanding,
8 | }
9 | );
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/StackScripts/StackScriptLanding/stackScriptLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { StackScriptsLanding } from 'src/features/StackScripts/StackScriptLanding/StackScriptsLanding';
4 |
5 | export const stackScriptsLandingLazyRoute = createLazyRoute('/stackscripts')({
6 | component: StackScriptsLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/routes/linodes/LinodesRoute.tsx:
--------------------------------------------------------------------------------
1 | import { Outlet } from '@tanstack/react-router';
2 | import React from 'react';
3 |
4 | import { SuspenseLoader } from 'src/components/SuspenseLoader';
5 |
6 | export const LinodesRoute = () => {
7 | return (
8 | }>
9 |
10 |
11 | );
12 | };
13 |
--------------------------------------------------------------------------------
/packages/manager/src/routes/profile/ProfileRoute.tsx:
--------------------------------------------------------------------------------
1 | import { Outlet } from '@tanstack/react-router';
2 | import React from 'react';
3 |
4 | import { SuspenseLoader } from 'src/components/SuspenseLoader';
5 |
6 | export const ProfileRoute = () => {
7 | return (
8 | }>
9 |
10 |
11 | );
12 | };
13 |
--------------------------------------------------------------------------------
/packages/queries/src/networktransfer/requests.ts:
--------------------------------------------------------------------------------
1 | import { getNetworkTransferPrices } from '@linode/api-v4';
2 | import { getAll } from '@linode/utilities';
3 |
4 | import type { PriceType } from '@linode/api-v4';
5 |
6 | export const getAllNetworkTransferPrices = () =>
7 | getAll((params) => getNetworkTransferPrices(params))().then(
8 | (data) => data.data,
9 | );
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/CloudPulse/Alerts/CreateAlert/cloudPulseAlertsCreateLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { CreateAlertDefinition } from './CreateAlertDefinition';
4 |
5 | export const cloudPulseAlertsCreateLazyRoute = createLazyRoute(
6 | '/alerts/definitions/create'
7 | )({
8 | component: CreateAlertDefinition,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/CloudPulse/Dashboard/cloudPulseMetricsLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { CloudPulseDashboardLanding } from 'src/features/CloudPulse/Dashboard/CloudPulseDashboardLanding';
4 |
5 | export const cloudPulseMetricsLandingLazyRoute = createLazyRoute('/metrics')({
6 | component: CloudPulseDashboardLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/VPCs/VPCDetail/SubnetAssignLinodesDrawer.styles.ts:
--------------------------------------------------------------------------------
1 | import { Box } from '@linode/ui';
2 | import { styled } from '@mui/material/styles';
3 |
4 | export const StyledButtonBox = styled(Box, { label: 'StyledButtonBox' })(
5 | ({ theme }) => ({
6 | display: 'flex',
7 | justifyContent: 'flex-end',
8 | margin: `${theme.spacing(3)} 0px`,
9 | })
10 | );
11 |
--------------------------------------------------------------------------------
/packages/ui/src/assets/icons/checkboxIndeterminate.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/constants/vpc.ts:
--------------------------------------------------------------------------------
1 | /** Copies shown to users when assigning and unassigning a Linode from a VPC */
2 | export const vpcConfigProfileInterfaceRebootNotice =
3 | 'Linodes with Configuration Profile Interfaces to be rebooted after changes.';
4 | export const vpcLinodeInterfaceShutDownNotice =
5 | 'Linodes with Linode Interfaces to be shut down and powered on after changes.';
6 |
--------------------------------------------------------------------------------
/packages/ui/src/components/InputLabel/InputLabel.tsx:
--------------------------------------------------------------------------------
1 | import _InputLabel from '@mui/material/InputLabel';
2 | import React from 'react';
3 |
4 | import type { InputLabelProps } from '@mui/material/InputLabel';
5 |
6 | /**
7 | * A `InputLabel` is used to label an ``.
8 | */
9 | export const InputLabel = (props: InputLabelProps) => {
10 | return <_InputLabel {...props} />;
11 | };
12 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/replaceNewlinesWithLineBreaks.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export const replaceNewlinesWithLineBreaks = (text: string) =>
4 | text.split('\n').map((text, i, lines) =>
5 | i === lines.length - 1 ? (
6 | text
7 | ) : (
8 |
9 | {text}
10 |
11 |
12 | ),
13 | );
14 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Databases/DatabaseDetail/DatabaseNetworking/databaseNetworkingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DatabaseNetworking } from './DatabaseNetworking';
4 |
5 | export const databaseNetworkingLazyRoute = createLazyRoute(
6 | '/databases/$engine/$databaseId/networking'
7 | )({
8 | component: DatabaseNetworking,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/EntityTransfers/EntityTransfersCreate/entityTransfersCreateLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { EntityTransfersCreate } from './EntityTransfersCreate';
4 |
5 | export const entityTransfersCreateLazyRoute = createLazyRoute(
6 | '/account/service-transfers/create'
7 | )({
8 | component: EntityTransfersCreate,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/EntityTransfers/EntityTransfersLanding/entityTransferLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { EntityTransfersLanding } from './EntityTransfersLanding';
4 |
5 | export const entityTransferLandingLazyRoute = createLazyRoute(
6 | '/account/service-transfers'
7 | )({
8 | component: EntityTransfersLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Events/factories/ipaddress.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 |
3 | import type { PartialEventMap } from '../types';
4 |
5 | export const ip: PartialEventMap<'ipaddress'> = {
6 | ipaddress_update: {
7 | notification: () => (
8 | <>
9 | An IP address has been updated on your account.
10 | >
11 | ),
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Kubernetes/KubernetesLanding/kubernetesLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { KubernetesLanding } from 'src/features/Kubernetes/KubernetesLanding/KubernetesLanding';
4 |
5 | export const kubernetesLandingLazyRoute = createLazyRoute(
6 | '/kubernetes/clusters'
7 | )({
8 | component: KubernetesLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Longview/LongviewDetail/DetailTabs/TopProcesses.styles.ts:
--------------------------------------------------------------------------------
1 | import { styled } from '@mui/material/styles';
2 |
3 | import { Link } from 'src/components/Link';
4 |
5 | export const StyledLink = styled(Link, { label: 'StyledLink' })(
6 | ({ theme }) => ({
7 | font: theme.font.bold,
8 | fontSize: 16,
9 | position: 'relative',
10 | top: 3,
11 | })
12 | );
13 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Longview/LongviewDetail/longviewDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { LongviewDetailWrapper } from 'src/features/Longview/LongviewDetail/LongviewDetailWrapper';
4 |
5 | export const longviewDetailLazyRoute = createLazyRoute('/longview/clients/$id')(
6 | {
7 | component: LongviewDetailWrapper,
8 | }
9 | );
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/NodeBalancers/NodeBalancersLanding/nodeBalancersLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { NodeBalancersLanding } from 'src/features/NodeBalancers/NodeBalancersLanding/NodeBalancersLanding';
4 |
5 | export const nodeBalancersLandingLazyRoute = createLazyRoute('/nodebalancers')({
6 | component: NodeBalancersLanding,
7 | });
8 |
--------------------------------------------------------------------------------
/packages/manager/src/features/VPCs/VPCCreate/FormComponents/CannotCreateVPCNotice.tsx:
--------------------------------------------------------------------------------
1 | import { Notice } from '@linode/ui';
2 | import * as React from 'react';
3 |
4 | import { CANNOT_CREATE_VPC_MESSAGE } from '../../constants';
5 |
6 | export const CannotCreateVPCNotice = (
7 |
12 | );
13 |
--------------------------------------------------------------------------------
/packages/manager/src/mocks/presets/crud/permissions.ts:
--------------------------------------------------------------------------------
1 | import { getPermissions } from 'src/mocks/presets/crud/handlers/permissions';
2 |
3 | import type { MockPresetCrud } from 'src/mocks/types';
4 |
5 | export const permissionsCrudPreset: MockPresetCrud = {
6 | group: { id: 'Permissions' },
7 | handlers: [getPermissions],
8 | id: 'permissions:crud',
9 | label: 'Permissions CRUD',
10 | };
11 |
--------------------------------------------------------------------------------
/packages/ui/src/components/RadioGroup/RadioGroup.tsx:
--------------------------------------------------------------------------------
1 | import { default as _RadioGroup } from '@mui/material/RadioGroup';
2 | import React from 'react';
3 |
4 | import type { RadioGroupProps } from '@mui/material/RadioGroup';
5 |
6 | /**
7 | * A `` groups many Radios.
8 | */
9 | export const RadioGroup = (props: RadioGroupProps) => {
10 | return <_RadioGroup {...props} />;
11 | };
12 |
--------------------------------------------------------------------------------
/packages/manager/src/features/CloudPulse/Alerts/AlertsDetail/cloudPulseAlertsDefinitionsDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { AlertDetail } from './AlertDetail';
4 |
5 | export const cloudPulseAlertsDefinitionsDetailLazyRoute = createLazyRoute(
6 | '/alerts/definitions/detail/$serviceType/$alertId'
7 | )({
8 | component: AlertDetail,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Events/factories/credit.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 |
3 | import type { PartialEventMap } from '../types';
4 |
5 | export const creditCard: PartialEventMap<'credit'> = {
6 | credit_card_updated: {
7 | notification: (e) => (
8 | <>
9 | Your credit card information has been updated.
10 | >
11 | ),
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/NodePoolsDisplay/LabelsAndTaints/LabelTable.styles.tsx:
--------------------------------------------------------------------------------
1 | import { styled } from '@mui/material/styles';
2 |
3 | import { Table } from 'src/components/Table';
4 |
5 | export const StyledLabelTable = styled(Table, {
6 | label: 'StyledLabelTable',
7 | })(({ theme }) => ({
8 | margin: `${theme.spacing()} 0 ${theme.spacing(1.5)}`,
9 | }));
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Support/SupportTickets/supportTicketsLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { SupportTicketsLanding } from 'src/features/Support/SupportTickets/SupportTicketsLanding';
4 |
5 | export const supportTicketsLandingLazyRoute = createLazyRoute(
6 | '/support/tickets'
7 | )({
8 | component: SupportTicketsLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/routes/root.ts:
--------------------------------------------------------------------------------
1 | import {
2 | createRootRouteWithContext,
3 | ErrorComponent,
4 | } from '@tanstack/react-router';
5 |
6 | import { RootSwitch } from './../RootSwitch';
7 |
8 | import type { RouterContext } from './types';
9 |
10 | export const rootRoute = createRootRouteWithContext()({
11 | component: RootSwitch,
12 | errorComponent: ErrorComponent,
13 | });
14 |
--------------------------------------------------------------------------------
/packages/api-v4/src/entities/types.ts:
--------------------------------------------------------------------------------
1 | export type EntityType =
2 | | 'database'
3 | | 'domain'
4 | | 'firewall'
5 | | 'image'
6 | | 'linode'
7 | | 'lkecluster'
8 | | 'longview'
9 | | 'nodebalancer'
10 | | 'placement_group'
11 | | 'stackscript'
12 | | 'volume'
13 | | 'vpc';
14 |
15 | export interface AccountEntity {
16 | id: number;
17 | label: string;
18 | type: EntityType;
19 | }
20 |
--------------------------------------------------------------------------------
/packages/manager/src/features/NodeBalancers/NodeBalancerDetail/nodeBalancersDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { NodeBalancerDetail } from 'src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerDetail';
4 |
5 | export const nodeBalancerDetailLazyRoute = createLazyRoute(
6 | '/nodebalancers/$id'
7 | )({
8 | component: NodeBalancerDetail,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/ObjectStorage/BucketDetail/bucketDetailLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { BucketDetailLanding } from 'src/features/ObjectStorage/BucketDetail';
4 |
5 | export const bucketDetailLandingLazyRoute = createLazyRoute(
6 | '/object-storage/buckets/$clusterId/$bucketName'
7 | )({
8 | component: BucketDetailLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/store/globalErrors/globalErrors.actions.ts:
--------------------------------------------------------------------------------
1 | import { actionCreatorFactory } from 'typescript-fsa';
2 |
3 | import type { State } from './types';
4 |
5 | export const actionCreator = actionCreatorFactory('@@manager/globalErrors');
6 |
7 | export const setErrors = actionCreator>('/set');
8 |
9 | export const clearErrors = actionCreator | undefined>('/clear');
10 |
--------------------------------------------------------------------------------
/packages/manager/src/utilities/getEventsActionLink.test.ts:
--------------------------------------------------------------------------------
1 | import { getEngineFromDatabaseEntityURL } from './getEventsActionLink';
2 |
3 | describe('getEngineFromDatabaseEntityURL', () => {
4 | it('should return an engine from a URL returned by apiv4', () => {
5 | expect(
6 | getEngineFromDatabaseEntityURL('/v4/databases/postgresql/instances/2959')
7 | ).toBe('postgresql');
8 | });
9 | });
10 |
--------------------------------------------------------------------------------
/packages/ui/src/assets/icons/toggleOn.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/scrollTo.ts:
--------------------------------------------------------------------------------
1 | import type * as React from 'react';
2 | /**
3 | * @param [ref] {React.RefObject} - If provided with a React Ref Object we will scroll to the
4 | * top of it.
5 | */
6 | export const scrollTo = (ref?: React.RefObject) => {
7 | window.scroll({
8 | behavior: 'smooth',
9 | left: 0,
10 | top: ref ? ref.current.offsetTop : 0,
11 | });
12 | };
13 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/ui/breadcrumb.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Breadcrumb UI element.
3 | *
4 | * Useful for performing navigation and validating navigation display.
5 | */
6 | export const breadcrumb = {
7 | /**
8 | * Finds a breadcrumb element.
9 | *
10 | * @returns Cypress chainable.
11 | */
12 | find: (): Cypress.Chainable => {
13 | return cy.get('[data-qa-breadcrumb]');
14 | },
15 | };
16 |
--------------------------------------------------------------------------------
/packages/manager/src/components/AccountActivation/accountActivationLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { AccountActivationLanding } from 'src/components/AccountActivation/AccountActivationLanding';
4 |
5 | export const accountActivationLandingLazyRoute = createLazyRoute(
6 | '/account-activation'
7 | )({
8 | component: AccountActivationLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/NetworkLoadBalancers/NetworkLoadBalancersLanding/networkLoadBalancersLazyRoute.tsx:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { NetworkLoadBalancersLanding } from './NetworkLoadBalancersLanding';
4 |
5 | export const networkLoadBalancersLazyRoute = createLazyRoute(
6 | '/netloadbalancers'
7 | )({
8 | component: NetworkLoadBalancersLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/ServiceTransfers/serviceTransfersCreateLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { EntityTransfersCreate } from '../EntityTransfers/EntityTransfersCreate/EntityTransfersCreate';
4 |
5 | export const serviceTransfersCreateLazyRoute = createLazyRoute(
6 | '/service-transfers/create'
7 | )({
8 | component: EntityTransfersCreate,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/ui/src/assets/icons/toggleOff.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/getNewRegionLabel.ts:
--------------------------------------------------------------------------------
1 | import type { Region } from '@linode/api-v4';
2 |
3 | export const getNewRegionLabel = (region: Region) => {
4 | const [city] = region.label.split(', ');
5 | // Include state for the US
6 | if (region.country === 'us') {
7 | return `${region.country.toUpperCase()}, ${region.label}`;
8 | }
9 | return `${region.country.toUpperCase()}, ${city}`;
10 | };
11 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Delivery/Shared/FormSubmitBar/FormSubmitBar.styles.tsx:
--------------------------------------------------------------------------------
1 | import { Typography } from '@linode/ui';
2 | import { styled } from '@mui/material/styles';
3 |
4 | export const StyledHeader = styled(Typography, {
5 | label: 'StyledHeader',
6 | })(({ theme }) => ({
7 | font: theme.font.bold,
8 | fontSize: theme.tokens.font.FontSize.M,
9 | lineHeight: theme.tokens.font.LineHeight.Xs,
10 | }));
11 |
--------------------------------------------------------------------------------
/packages/manager/src/features/EntityTransfers/EntityTransfersCreate/TransferHeader.tsx:
--------------------------------------------------------------------------------
1 | import { Typography } from '@linode/ui';
2 | import * as React from 'react';
3 |
4 | export const TransferHeader = () => {
5 | return (
6 |
7 | To transfer ownership of one or more Linodes make your selections below
8 | then click Generate Token.
9 |
10 | );
11 | };
12 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodeCreate/Tabs/Backups/Backups.tsx:
--------------------------------------------------------------------------------
1 | import { Stack } from '@linode/ui';
2 | import React from 'react';
3 |
4 | import { BackupSelect } from './BackupSelect';
5 | import { LinodeSelect } from './LinodeSelect';
6 |
7 | export const Backups = () => {
8 | return (
9 |
10 |
11 |
12 |
13 | );
14 | };
15 |
--------------------------------------------------------------------------------
/packages/manager/src/features/NetworkLoadBalancers/NetworkLoadBalancersDetail/NetworkLoadBalancerDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import NetworkLoadBalancersDetail from './NetworkLoadBalancersDetail';
4 |
5 | export const networkLoadBalancerDetailLazyRoute = createLazyRoute(
6 | '/netloadbalancers/$id'
7 | )({
8 | component: NetworkLoadBalancersDetail,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/PlacementGroups/PlacementGroups.styles.ts:
--------------------------------------------------------------------------------
1 | import { List } from '@linode/ui';
2 | import { styled } from '@mui/material/styles';
3 |
4 | export const StyledDetailPanelFormattedRegionList = styled(List, {
5 | label: 'StyledFormattedRegionList',
6 | })(({ theme }) => ({
7 | '& li': {
8 | padding: `4px 0`,
9 | },
10 | padding: `${theme.spacing(0.5)} ${theme.spacing()}`,
11 | }));
12 |
--------------------------------------------------------------------------------
/packages/manager/src/utilities/sortByUTFDate.ts:
--------------------------------------------------------------------------------
1 | import { parseAPIDate } from 'src/utilities/date';
2 |
3 | type SortOrder = 'asc' | 'desc';
4 |
5 | export const sortByUTFDate = (a: string, b: string, order: SortOrder) => {
6 | const result = parseAPIDate(a).diff(parseAPIDate(b)).valueOf();
7 | if (order === 'asc') {
8 | return result; // ascending order
9 | }
10 | return -result; // descending order
11 | };
12 |
--------------------------------------------------------------------------------
/packages/utilities/src/hooks/usePrevious.ts:
--------------------------------------------------------------------------------
1 | import { useEffect, useRef } from 'react';
2 |
3 | /** This hook is from the React docs:
4 | * https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state
5 | */
6 |
7 | export const usePrevious = (value: T) => {
8 | const ref = useRef(undefined);
9 | useEffect(() => {
10 | ref.current = value;
11 | });
12 | return ref.current;
13 | };
14 |
--------------------------------------------------------------------------------
/packages/manager/cypress/fixtures/stackscripts/stackscript-udf.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # This is a valid StackScript with user-defined fields to test StackScript
3 | # and Linode creation with user-defined fields.
4 |
5 | #
6 | #
7 |
8 | echo "Hello, world!"
9 |
--------------------------------------------------------------------------------
/packages/manager/src/factories/accountLogin.ts:
--------------------------------------------------------------------------------
1 | import { Factory } from '@linode/utilities';
2 |
3 | import type { AccountLogin } from '@linode/api-v4';
4 |
5 | export const accountLoginFactory = Factory.Sync.makeFactory({
6 | datetime: '2021-05-21T14:27:51',
7 | id: Factory.each((id) => id),
8 | ip: '127.0.0.1',
9 | restricted: false,
10 | status: 'successful',
11 | username: 'mock-user',
12 | });
13 |
--------------------------------------------------------------------------------
/packages/utilities/src/helpers/isToday.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Returns true if the end time is the same day (within 24 hours)
3 | * as the start time, false otherwise. Padded to 25 hours to err
4 | * on the side of caution.
5 | * @param start Start time (must be seconds, not ms)
6 | * @param end End time (must be seconds, not ms)
7 | */
8 | export const isToday = (start: number, end: number) =>
9 | end - start < 60 * 60 * 25;
10 |
--------------------------------------------------------------------------------
/packages/api-v4/src/account/index.ts:
--------------------------------------------------------------------------------
1 | export * from './account';
2 |
3 | export * from './betas';
4 |
5 | export * from './events';
6 |
7 | export * from './invoices';
8 |
9 | export * from './logins';
10 |
11 | export * from './maintenance';
12 |
13 | export * from './oauth';
14 |
15 | export * from './payments';
16 |
17 | export * from './promos';
18 |
19 | export * from './types';
20 |
21 | export * from './users';
22 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/constants/images.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @file Constants related to machine image tests.
3 | */
4 |
5 | // Length of time to wait for Image to finish processing, milliseconds.
6 | // 5 minutes.
7 | export const imageUploadProcessingTimeout = 300000;
8 |
9 | // Length of time to wait for Image capture to complete, milliseconds.
10 | // 7 minutes.
11 | export const imageCaptureProcessingTimeout = 420000;
12 |
--------------------------------------------------------------------------------
/packages/manager/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Akamai Cloud Manager
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Delivery/Destinations/DestinationForm/destinationCreateLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DestinationCreate } from 'src/features/Delivery/Destinations/DestinationForm/DestinationCreate';
4 |
5 | export const destinationCreateLazyRoute = createLazyRoute(
6 | '/logs/delivery/destinations/create'
7 | )({
8 | component: DestinationCreate,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/LinodeNetworking/NetworkingSummaryPanel/utils.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Calculates the percentage of a value compared to a target.
3 | * @param value
4 | * @param target
5 | * @returns number
6 | */
7 | export const calculatePercentageWithCeiling = (
8 | value: number,
9 | target: number
10 | ) => {
11 | return target > value ? 100 - ((target - value) * 100) / target : 100;
12 | };
13 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/LinodePermissionsError.tsx:
--------------------------------------------------------------------------------
1 | import { Notice } from '@linode/ui';
2 | import * as React from 'react';
3 |
4 | import { getRestrictedResourceText } from 'src/features/Account/utils';
5 |
6 | export const LinodePermissionsError = () => (
7 |
13 | );
14 |
--------------------------------------------------------------------------------
/packages/queries/src/account/availability.ts:
--------------------------------------------------------------------------------
1 | import { useQuery } from '@tanstack/react-query';
2 |
3 | import { accountQueries } from './queries';
4 |
5 | import type { AccountAvailability, APIError } from '@linode/api-v4';
6 |
7 | export const useAllAccountAvailabilitiesQuery = (enabled: boolean = true) =>
8 | useQuery({
9 | ...accountQueries.availability,
10 | enabled,
11 | });
12 |
--------------------------------------------------------------------------------
/packages/queries/src/cloudnats/requests.ts:
--------------------------------------------------------------------------------
1 | import { getCloudNATs } from '@linode/api-v4';
2 | import { getAll } from '@linode/utilities';
3 |
4 | import type { CloudNAT } from '@linode/api-v4';
5 | import type { Filter } from '@linode/api-v4/lib/types';
6 |
7 | export const getAllCloudNATsRequest = (filter: Filter) =>
8 | getAll((params) => getCloudNATs(params, filter))().then(
9 | (data) => data.data,
10 | );
11 |
--------------------------------------------------------------------------------
/packages/queries/src/eventHandlers.ts:
--------------------------------------------------------------------------------
1 | import type { Event } from '@linode/api-v4';
2 | import type {
3 | InvalidateQueryFilters,
4 | QueryClient,
5 | } from '@tanstack/react-query';
6 |
7 | // TODO: move all event handlers to this file once migrated
8 | export interface EventHandlerData {
9 | event: Event;
10 | invalidateQueries: (filters: InvalidateQueryFilters) => Promise;
11 | queryClient: QueryClient;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/queries/src/statusPage/index.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * These are types and methods for working with Linode's statuspage.io integration
3 | * (status.linode.com). Since these are not part of the Linode API, and are only
4 | * used through this query, all of this is contained within src/queries.
5 | */
6 |
7 | export * from './keys';
8 | export * from './requests';
9 | export * from './statusPage';
10 | export * from './types';
11 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | This changelog has been deprecated in favor individual changelogs for each package.
4 |
5 | See changelogs for:
6 | - [@linode/api-v4](https://github.com/linode/manager/blob/master/packages/api-v4/CHANGELOG.md)
7 | - [@linode/manager](https://github.com/linode/manager/blob/master/packages/manager/CHANGELOG.md)
8 | - [@linode/validation](https://github.com/linode/manager/blob/master/packages/validation/CHANGELOG.md)
--------------------------------------------------------------------------------
/packages/manager/src/features/Delivery/Destinations/DestinationForm/destinationEditLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DestinationEdit } from 'src/features/Delivery/Destinations/DestinationForm/DestinationEdit';
4 |
5 | export const destinationEditLazyRoute = createLazyRoute(
6 | '/logs/delivery/destinations/$destinationId/edit'
7 | )({
8 | component: DestinationEdit,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/NetworkLoadBalancers/NetworkLoadBalancersDetail/NetworkLoadBalancerListenersLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import NetworkLoadBalancersDetail from './NetworkLoadBalancersDetail';
4 |
5 | export const networkLoadBalancerListenersLazyRoute = createLazyRoute(
6 | '/netloadbalancers/$id/listeners'
7 | )({
8 | component: NetworkLoadBalancersDetail,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/PlacementGroups/PlacementGroupsDetail/placementGroupDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { PlacementGroupsDetail } from 'src/features/PlacementGroups/PlacementGroupsDetail/PlacementGroupsDetail';
4 |
5 | export const placementGroupsDetailLazyRoute = createLazyRoute(
6 | '/placement-groups/$id'
7 | )({
8 | component: PlacementGroupsDetail,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/hooks/useIsLargeAccount.ts:
--------------------------------------------------------------------------------
1 | import { useLinodesQuery } from '@linode/queries';
2 |
3 | import { LARGE_ACCOUNT_THRESHOLD } from 'src/constants';
4 |
5 | export const useIsLargeAccount = (enabled = true) => {
6 | const { data: linodesData } = useLinodesQuery({}, {}, enabled);
7 |
8 | if (!linodesData) {
9 | return undefined;
10 | }
11 |
12 | return linodesData.results > LARGE_ACCOUNT_THRESHOLD;
13 | };
14 |
--------------------------------------------------------------------------------
/packages/manager/src/mocks/mswWorkers.ts:
--------------------------------------------------------------------------------
1 | import { setupWorker } from 'msw/browser';
2 |
3 | import { handlers } from './serverHandlers';
4 |
5 | import type { HttpHandler } from 'msw';
6 |
7 | export const worker = (
8 | extraHandlers: HttpHandler[],
9 | baseHandlers: HttpHandler[]
10 | ) => {
11 | return setupWorker(...extraHandlers, ...baseHandlers);
12 | };
13 |
14 | export const storybookWorker = setupWorker(...handlers);
15 |
--------------------------------------------------------------------------------
/packages/ui/src/assets/icons/checkbox.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/constants/linodes.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @file Constants related to Linode tests.
3 | */
4 |
5 | /**
6 | * Length of time to wait for a Linode to be created.
7 | *
8 | * Equals 5 minutes.
9 | */
10 | export const LINODE_CREATE_TIMEOUT = 300_000;
11 |
12 | /**
13 | * Length of time to wait for a Linode to be cloned.
14 | *
15 | * Equals 5 minutes.
16 | */
17 | export const LINODE_CLONE_TIMEOUT = 300_000;
18 |
--------------------------------------------------------------------------------
/packages/manager/src/features/PlacementGroups/PlacementGroupsLanding/placemenGroupsLandingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { PlacementGroupsLanding } from 'src/features/PlacementGroups/PlacementGroupsLanding/PlacementGroupsLanding';
4 |
5 | export const placementGroupsLandingLazyRoute = createLazyRoute(
6 | '/placement-groups'
7 | )({
8 | component: PlacementGroupsLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/utilities/src/hooks/index.ts:
--------------------------------------------------------------------------------
1 | export * from './useDebouncedValue';
2 | export * from './useDialog';
3 | export * from './useEditableLabelState';
4 | export * from './useErrors';
5 | export * from './useFormattedDate';
6 | export * from './useFormValidateOnChange';
7 | export * from './useInterval';
8 | export * from './useOpenClose';
9 | export * from './usePrevious';
10 | export * from './useScript';
11 | export * from './useSet';
12 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/component/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Cloud Manager Components
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/packages/manager/src/assets/icons/LKEminusSign.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/src/mocks/presets/crud/networking.ts:
--------------------------------------------------------------------------------
1 | import {
2 | allocateIP,
3 | getIPAddresses,
4 | } from 'src/mocks/presets/crud/handlers/networking';
5 |
6 | import type { MockPresetCrud } from 'src/mocks/types';
7 |
8 | export const networkingCrudPreset: MockPresetCrud = {
9 | group: { id: 'IP Addresses' },
10 | handlers: [getIPAddresses, allocateIP],
11 | id: 'ip-addresses:crud',
12 | label: 'IP Addresses CRUD',
13 | };
14 |
--------------------------------------------------------------------------------
/scripts/junit-summary/formatters/status-formatter.ts:
--------------------------------------------------------------------------------
1 | import type { Formatter } from './formatter';
2 | import type { RunInfo } from '../results/run-info';
3 |
4 | /**
5 | * Outputs "passing" if all tests have passed, or "failing" if one or more has failed.
6 | *
7 | * @param info - Run info.
8 | */
9 | export const statusFormatter: Formatter = (
10 | info: RunInfo,
11 | ) => {
12 | return info.failing ? 'failing' : 'passing';
13 | };
14 |
--------------------------------------------------------------------------------
/packages/manager/src/components/TransferDisplay/TransferDisplay.styles.ts:
--------------------------------------------------------------------------------
1 | import { Box } from '@linode/ui';
2 | import { styled } from '@mui/material/styles';
3 |
4 | export const StyledTransferDisplayContainer = styled(Box, {
5 | label: 'StyledTransferDisplayTypography',
6 | })(({ theme }) => ({
7 | margin: 'auto',
8 | textAlign: 'center',
9 | [theme.breakpoints.down('md')]: {
10 | width: '85%',
11 | },
12 | width: '100%',
13 | }));
14 |
--------------------------------------------------------------------------------
/packages/manager/src/features/CloudPulse/Alerts/EditAlert/cloudPulseAlertsDefinitionsEditLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { EditAlertLanding } from 'src/features/CloudPulse/Alerts/EditAlert/EditAlertLanding';
4 |
5 | export const cloudPulseAlertsDefinitionsEditLazyRoute = createLazyRoute(
6 | '/alerts/definitions/edit/$serviceType/$alertId'
7 | )({
8 | component: EditAlertLanding,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Help/SupportSearchLanding/SupportSearchLandingWrapper.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 |
3 | import SupportSearchLanding from 'src/features/Help/SupportSearchLanding/SupportSearchLanding';
4 |
5 | import type { AlgoliaState as AlgoliaProps } from 'src/features/Help/SearchHOC';
6 |
7 | export const SupportSearchLandingWrapper = (props: AlgoliaProps) => {
8 | return ;
9 | };
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/kubernetesClusterDetailLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { KubernetesClusterDetail } from 'src/features/Kubernetes/KubernetesClusterDetail/KubernetesClusterDetail';
4 |
5 | export const kubernetesClusterDetailLazyRoute = createLazyRoute(
6 | '/kubernetes/clusters/$clusterId'
7 | )({
8 | component: KubernetesClusterDetail,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Linodes/LinodesDetail/LinodeNetworking/types.ts:
--------------------------------------------------------------------------------
1 | export type IPTypes =
2 | | 'Link Local – IPv6'
3 | | 'Private – IPv4'
4 | | 'Public – IPv4'
5 | | 'Public – IPv6 – SLAAC'
6 | | 'Range – IPv6'
7 | | 'Reserved IPv4 (private)'
8 | | 'Reserved IPv4 (public)'
9 | | 'Shared – IPv4'
10 | | 'VPC – IPv4'
11 | | 'VPC – IPv6'
12 | | 'VPC – Range – IPv4'
13 | | 'VPC – Range – IPv6'
14 | | 'VPC NAT – IPv4';
15 |
--------------------------------------------------------------------------------
/packages/manager/public/assets/wazuh.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/src/mocks/presets/crud/users.ts:
--------------------------------------------------------------------------------
1 | import {
2 | createUser,
3 | deleteUser,
4 | getUsers,
5 | updateUser,
6 | } from 'src/mocks/presets/crud/handlers/users';
7 |
8 | import type { MockPresetCrud } from 'src/mocks/types';
9 |
10 | export const usersCrudPreset: MockPresetCrud = {
11 | group: { id: 'Users' },
12 | handlers: [getUsers, createUser, updateUser, deleteUser],
13 | id: 'users:crud',
14 | label: 'Users CRUD',
15 | };
16 |
--------------------------------------------------------------------------------
/packages/ui/src/components/FormHelperText/FormHelperText.tsx:
--------------------------------------------------------------------------------
1 | import { default as _FormHelperText } from '@mui/material/FormHelperText';
2 | import React from 'react';
3 |
4 | import type { FormHelperTextProps } from '@mui/material/FormHelperText';
5 |
6 | /**
7 | * A `` provides helper text to an input.
8 | */
9 | export const FormHelperText = (props: FormHelperTextProps) => {
10 | return <_FormHelperText {...props} />;
11 | };
12 |
--------------------------------------------------------------------------------
/scripts/junit-summary/results/test-result.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Describes an individual test result.
3 | */
4 | export interface TestResult {
5 | /** Test spec filename. */
6 | testFilename: string;
7 |
8 | /** Test group name. */
9 | groupName: string;
10 |
11 | /** Test name. */
12 | testName: string;
13 |
14 | /** Whether test is passing. */
15 | passing: boolean;
16 |
17 | /** Whether test is failing. */
18 | failing: boolean;
19 | };
20 |
--------------------------------------------------------------------------------
/packages/manager/cypress/support/cypress-exports.ts:
--------------------------------------------------------------------------------
1 | // We can't import Cypress types cleanly because of our tsconfig's `moduleResolution` setting.
2 | // For now, we will re-rexport types here so they are easily usable in our test suite.
3 | //
4 | // Cypress issue: https://github.com/cypress-io/cypress/issues/27973
5 | // Extra Context: https://github.com/linode/manager/pull/11611#discussion_r1941711748
6 | export * from '../../node_modules/cypress/types/net-stubbing';
7 |
--------------------------------------------------------------------------------
/packages/manager/src/assets/icons/ResizeWindow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/manager/src/features/CloudPulse/Alerts/AlertsDetail/constants.ts:
--------------------------------------------------------------------------------
1 | import type { DimensionFilterOperatorType } from '@linode/api-v4';
2 |
3 | export const transformationAllowedOperators: DimensionFilterOperatorType[] = [
4 | 'eq',
5 | 'neq',
6 | 'in',
7 | ];
8 |
9 | export const LINODE_DIMENSION_LABEL = 'linode_id';
10 | export const VPC_SUBNET_DIMENSION_LABEL = 'vpc_subnet_id';
11 | export const NODEBALANCER_DIMENSION_LABEL = 'nodebalancer_id';
12 |
--------------------------------------------------------------------------------
/packages/ui/src/utilities/error.test.ts:
--------------------------------------------------------------------------------
1 | import { describe, expect, it } from 'vitest';
2 |
3 | import { getErrorText } from './error';
4 |
5 | describe('getErrorText', () => {
6 | it('should return a string error text', () => {
7 | expect(getErrorText('Not Found')).toBe('Not Found');
8 | });
9 |
10 | it('should return an APIError error text', () => {
11 | expect(getErrorText([{ reason: 'Not Found' }])).toBe('Not Found');
12 | });
13 | });
14 |
--------------------------------------------------------------------------------
/packages/api-v4/src/network-transfer/prices.ts:
--------------------------------------------------------------------------------
1 | import { API_ROOT } from 'src/constants';
2 | import Request, { setMethod, setParams, setURL } from 'src/request';
3 |
4 | import type { Params, PriceType, ResourcePage } from 'src/types';
5 |
6 | export const getNetworkTransferPrices = (params?: Params) =>
7 | Request>(
8 | setURL(`${API_ROOT}/network-transfer/prices`),
9 | setMethod('GET'),
10 | setParams(params),
11 | );
12 |
--------------------------------------------------------------------------------
/packages/manager/src/features/Databases/DatabaseDetail/DatabaseAdvancedConfiguration/databaseAdvancedConfigurationLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { DatabaseAdvancedConfiguration } from './DatabaseAdvancedConfiguration';
4 |
5 | export const databaseAdvancedConfigurationLazyRoute = createLazyRoute(
6 | '/databases/$engine/$databaseId/configs'
7 | )({
8 | component: DatabaseAdvancedConfiguration,
9 | });
10 |
--------------------------------------------------------------------------------
/packages/manager/src/features/ObjectStorage/BucketLanding/OMC_CreateBucketDrawer.styles.ts:
--------------------------------------------------------------------------------
1 | import { styled } from '@mui/material/styles';
2 |
3 | import { EUAgreementCheckbox } from 'src/features/Account/Agreements/EUAgreementCheckbox';
4 |
5 | export const StyledEUAgreementCheckbox = styled(EUAgreementCheckbox, {
6 | label: 'StyledEUAgreementCheckbox',
7 | })(({ theme }) => ({
8 | marginButton: theme.spacing(3),
9 | marginTop: theme.spacing(3),
10 | }));
11 |
--------------------------------------------------------------------------------
/packages/manager/src/factories/kernels.ts:
--------------------------------------------------------------------------------
1 | import { Factory } from '@linode/utilities';
2 |
3 | import type { Kernel } from '@linode/api-v4';
4 |
5 | export const kernelFactory = Factory.Sync.makeFactory({
6 | id: Factory.each((i) => `kernel-${i}`),
7 | label: Factory.each((i) => `kernel-${i}`),
8 | version: '1.0.0',
9 | kvm: true,
10 | architecture: 'x86_64',
11 | pvops: false,
12 | deprecated: false,
13 | built: '2009-10-26T04:00:00',
14 | });
15 |
--------------------------------------------------------------------------------
/packages/manager/src/features/CloudPulse/Alerts/NotificationChannels/NotificationsChannelsListing/cloudPulseAlertsNotificationChannelsListingLazyRoute.ts:
--------------------------------------------------------------------------------
1 | import { createLazyRoute } from '@tanstack/react-router';
2 |
3 | import { NotificationChannelListing } from './NotificationChannelListing';
4 |
5 | export const cloudPulseAlertsNotificationChannelsListingLazyRoute =
6 | createLazyRoute('/alerts/notification-channels')({
7 | component: NotificationChannelListing,
8 | });
9 |
--------------------------------------------------------------------------------
/packages/manager/src/features/PlacementGroups/PlacementGroupsLanding/PlacementGroupsRow.styles.ts:
--------------------------------------------------------------------------------
1 | import Warning from '@mui/icons-material/Warning';
2 | import { styled } from '@mui/material/styles';
3 |
4 | export const StyledWarningIcon = styled(Warning, {
5 | label: 'StyledWarningIcon',
6 | })(({ theme }) => ({
7 | fill: theme.color.yellow,
8 | height: 16,
9 | marginRight: theme.spacing(),
10 | position: 'relative',
11 | top: 2,
12 | width: 16,
13 | }));
14 |
--------------------------------------------------------------------------------
/packages/manager/src/hooks/useInfinitePageSize.ts:
--------------------------------------------------------------------------------
1 | import { storage } from 'src/utilities/storage';
2 |
3 | export const useInfinitePageSize = () => {
4 | return {
5 | // Setting infinitePageSize to 100 since Show All is effecting page performance.
6 | infinitePageSize:
7 | storage.infinitePageSize.get() === Infinity
8 | ? 100
9 | : storage.infinitePageSize.get(),
10 | setInfinitePageSize: storage.infinitePageSize.set,
11 | };
12 | };
13 |
--------------------------------------------------------------------------------
/packages/tsconfig/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@linode/tsconfig",
3 | "version": "0.0.0",
4 | "description": "Shared TypeScript configuration for Linode projects",
5 | "keywords": ["TypeScript", "tsconfig", "tsc", "Linode", "Akamai"],
6 | "exports": {
7 | "./package": "./tsconfig.package.json",
8 | "./react": "./tsconfig.react.json",
9 | "./non-strict": "./tsconfig.non-strict.json",
10 | "./emit-types": "./tsconfig.emit-types.json"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/packages/tsconfig/tsconfig.package.json:
--------------------------------------------------------------------------------
1 | {
2 | /**
3 | * This tsconfig is our base config for packages.
4 | */
5 | "compilerOptions": {
6 | "target": "esnext",
7 | "module": "esnext",
8 | "esModuleInterop": true,
9 | "moduleResolution": "bundler",
10 | "skipLibCheck": true,
11 | "strict": true,
12 | "noUnusedLocals": true,
13 | "incremental": true,
14 | "noEmit": true
15 | },
16 | "include": [
17 | "src"
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------