diff --git a/packages/toolpad-app/package.json b/packages/toolpad-app/package.json index 60430456971..1818a570661 100644 --- a/packages/toolpad-app/package.json +++ b/packages/toolpad-app/package.json @@ -79,7 +79,6 @@ "cors": "^2.8.5", "crypto-js": "^4.1.1", "csstype": "^3.1.2", - "cuid": "^3.0.0", "dayjs": "^1.11.7", "dotenv": "^16.0.3", "esbuild": "0.17.18", @@ -101,6 +100,7 @@ "mime": "^3.0.0", "monaco-editor": "0.37.1", "mysql2": "^3.2.3", + "nanoid": "^4.0.2", "next": "^13.3.1", "node-fetch": "^2.6.9", "node-fetch-har": "^1.0.1", diff --git a/packages/toolpad-app/src/appDom/index.ts b/packages/toolpad-app/src/appDom/index.ts index 959e31df7cf..93fdbd0e149 100644 --- a/packages/toolpad-app/src/appDom/index.ts +++ b/packages/toolpad-app/src/appDom/index.ts @@ -1,5 +1,5 @@ +import { nanoid } from 'nanoid/non-secure'; import { generateKeyBetween } from 'fractional-indexing'; -import cuid from 'cuid'; import { NodeId, NodeReference, @@ -234,8 +234,8 @@ function assertIsType(node: AppDomNode, type: T['type']): invariant(isType(node, type), `Expected node type "${type}" but got "${node.type}"`); } -function createId(): NodeId { - return cuid.slug() as NodeId; +export function createId(): NodeId { + return nanoid(7) as NodeId; } export function createConst(value: V): ConstantAttrValue { diff --git a/packages/toolpad-app/src/components/MonacoEditor.tsx b/packages/toolpad-app/src/components/MonacoEditor.tsx index bfde14b8c00..051d076b0b4 100644 --- a/packages/toolpad-app/src/components/MonacoEditor.tsx +++ b/packages/toolpad-app/src/components/MonacoEditor.tsx @@ -7,7 +7,7 @@ import * as React from 'react'; import * as monaco from 'monaco-editor'; import { styled, SxProps } from '@mui/material'; import clsx from 'clsx'; -import cuid from 'cuid'; +import { nanoid } from 'nanoid/non-secure'; import invariant from 'invariant'; import { conf as jsonBasicConf, @@ -370,7 +370,7 @@ export default React.forwardRef(function } } } else { - const pathUri = monaco.Uri.parse(`./scripts/${cuid()}${getExtension(language)}`); + const pathUri = monaco.Uri.parse(`./scripts/${nanoid(7)}${getExtension(language)}`); const model = monaco.editor.createModel(value || '', language, pathUri); instance = monaco.editor.create(rootRef.current, { diff --git a/packages/toolpad-app/src/server/localMode.ts b/packages/toolpad-app/src/server/localMode.ts index 3f06cb2efe0..751e00f23f4 100644 --- a/packages/toolpad-app/src/server/localMode.ts +++ b/packages/toolpad-app/src/server/localMode.ts @@ -9,7 +9,6 @@ import { fromZodError } from 'zod-validation-error'; import { glob } from 'glob'; import * as chokidar from 'chokidar'; import { debounce } from 'lodash-es'; -import cuid from 'cuid'; import { Emitter } from '@mui/toolpad-utils/events'; import { errorFrom } from '@mui/toolpad-utils/errors'; import { filterValues, hasOwnProperty, mapValues } from '@mui/toolpad-utils/collections'; @@ -1108,7 +1107,7 @@ async function initToolpadFolder(root: string) { apiVersion: 'v1', kind: 'page', spec: { - id: cuid.slug(), + id: appDom.createId(), title: 'Default page', }, }; diff --git a/packages/toolpad-app/tsup.config.ts b/packages/toolpad-app/tsup.config.ts index a2fcfd01fa1..c269698f48a 100644 --- a/packages/toolpad-app/tsup.config.ts +++ b/packages/toolpad-app/tsup.config.ts @@ -11,7 +11,15 @@ export default defineConfig([ }, outDir: 'dist/cli', silent: true, - noExternal: ['open-editor', 'execa', 'fractional-indexing', 'lodash-es', 'chalk', 'get-port'], + noExternal: [ + 'open-editor', + 'execa', + 'fractional-indexing', + 'lodash-es', + 'chalk', + 'get-port', + 'nanoid', + ], clean: true, sourcemap: true, async onSuccess() { diff --git a/yarn.lock b/yarn.lock index fcce3dbba91..eb481c7b91d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4931,11 +4931,6 @@ csstype@^3.0.2, csstype@^3.1.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== -cuid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cuid/-/cuid-3.0.0.tgz#8cef32136e3c48e4a94aec42025996b888cbae82" - integrity sha512-WZYYkHdIDnaxdeP8Misq3Lah5vFjJwGuItJuV+tvMafosMzw0nF297T7mrm8IOWiPJkV6gc7sa8pzx27+w25Zg== - "d3-array@2 - 3", "d3-array@2.10.0 - 3", d3-array@^3.1.6: version "3.2.3" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.3.tgz#39f1f4954e4a09ff69ac597c2d61906b04e84740" @@ -9593,6 +9588,11 @@ nanoid@^3.3.4, nanoid@^3.3.6: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" + integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== + natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4"