twenty 2.51.1 → 2.51.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app-template/yarn.lock +93 -93
- package/dist/app-worker.cjs +1 -1
- package/dist/chunks/{build-source-manifest-BmZlsY97.cjs → build-source-manifest-Gw2TI8Xe.cjs} +1 -1
- package/dist/chunks/{build-source-snapshot-BWbLS2F3.cjs → build-source-snapshot-lbc2Pb7D.cjs} +1 -1
- package/dist/chunks/{check-node-requirement-CGBKvEqH.cjs → check-node-requirement-B_hf2E32.cjs} +1 -1
- package/dist/chunks/cli-version.constant-B92ETb2e.cjs +1 -0
- package/dist/chunks/{extract-source-translations-DeVUs6Xz.cjs → extract-source-translations-EiwJs83j.cjs} +1 -1
- package/dist/chunks/{global-flags.constant-CRom3uiZ.cjs → global-flags.constant-Bd-dYByR.cjs} +1 -1
- package/dist/chunks/{read-app-identity-dWB3NG6p.cjs → read-app-identity-Da5yI23t.cjs} +1 -1
- package/dist/chunks/{read-application-identifier-BlkRhC8j.cjs → read-application-identifier-C3qn6MSa.cjs} +1 -1
- package/dist/chunks/{resolve-source-sdk-CU1wk4bl.cjs → resolve-source-sdk-BNnltA8w.cjs} +1 -1
- package/dist/chunks/{run-app-add-command-wpCH-Lp9.cjs → run-app-add-command-C0ojf2K6.cjs} +1 -1
- package/dist/chunks/{run-app-apply-command-CPocg1Xz.cjs → run-app-apply-command-DM_46_Gl.cjs} +1 -1
- package/dist/chunks/{run-app-build-command-DSGpIZBT.cjs → run-app-build-command-DA7o-ebo.cjs} +1 -1
- package/dist/chunks/{run-app-dev-command-BOAYsAKr.cjs → run-app-dev-command-DkerkLC8.cjs} +1 -1
- package/dist/chunks/{run-app-exec-command-Fwi80y3g.cjs → run-app-exec-command-CpNraBBq.cjs} +1 -1
- package/dist/chunks/{run-app-generate-client-command-DidOpqNE.cjs → run-app-generate-client-command-a5IQE60M.cjs} +1 -1
- package/dist/chunks/run-app-init-command-ktxmLunJ.cjs +2 -0
- package/dist/chunks/{run-app-install-command-DPt8PzUS.cjs → run-app-install-command-AG25zpGx.cjs} +1 -1
- package/dist/chunks/{run-app-logs-command-C-9ZyGau.cjs → run-app-logs-command-Dd-OBwhF.cjs} +1 -1
- package/dist/chunks/{run-app-operation-Cw5M8v43.cjs → run-app-operation-BLlHL5Nk.cjs} +1 -1
- package/dist/chunks/{run-app-plan-command-CT1SlcdX.cjs → run-app-plan-command-7Bi90BQp.cjs} +1 -1
- package/dist/chunks/{run-app-publish-command-DiIlqdTg.cjs → run-app-publish-command-9zd_f_a3.cjs} +1 -1
- package/dist/chunks/{run-app-pull-command-r_NjC_Rk.cjs → run-app-pull-command-CdArJFPT.cjs} +1 -1
- package/dist/chunks/{run-app-translations-extract-command-Ba66GX7e.cjs → run-app-translations-extract-command-DrUZkCUW.cjs} +1 -1
- package/dist/chunks/{run-app-typecheck-command-MAxB7Yg3.cjs → run-app-typecheck-command-CQe2CTGd.cjs} +1 -1
- package/dist/chunks/{run-app-uninstall-command-BzYSsL5a.cjs → run-app-uninstall-command--RFHGXiH.cjs} +1 -1
- package/dist/chunks/{run-cli-CuxXyb__.cjs → run-cli-CwAoqiMW.cjs} +1 -1
- package/dist/chunks/{run-commands-command-D0P3mHHz.cjs → run-commands-command-Dp-Xzn5x.cjs} +1 -1
- package/dist/chunks/{run-doctor-command-ClisEoI5.cjs → run-doctor-command-C-gOPvp9.cjs} +1 -1
- package/dist/chunks/{run-version-command-DdKb9JL0.cjs → run-version-command-D4R17bRL.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/package.json +2 -2
- package/dist/chunks/cli-version.constant-DGQXQw_V.cjs +0 -1
- package/dist/chunks/run-app-init-command-DRFYqMMh.cjs +0 -2
package/dist/chunks/{global-flags.constant-CRom3uiZ.cjs → global-flags.constant-Bd-dYByR.cjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={path:[`app`,`install`],description:`Install a registered app package in the target workspace`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--universal-identifier <id>`,description:`Registered app universal identifier, works without a local project`}],examples:[`twenty app install --remote dev`,`twenty app install --path ./apps/billing --json`,`twenty app install --universal-identifier <id> --remote staging --json`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-install-command-DPt8PzUS.cjs"))).runAppInstallCommand},t={path:[`app`,`publish`],description:`Build and publish the app to npm or a private Twenty registry`,options:[{flags:`--private`,description:`Publish to a Twenty server registry using --remote or the active target`},{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--tag <tag>`,description:`npm dist-tag, for example beta or next`}],examples:[`twenty app publish`,`twenty app publish --private --remote dev`,`twenty app publish --path ./apps/billing --tag beta --json`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-app-publish-command-DiIlqdTg.cjs"))).runAppPublishCommand},n={path:[`app`,`dev`],description:`Watch app source, build complete snapshots and sync changes to the workspace`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--no-delete`,description:`Keep remote entities missing from the app source`},{flags:`--create`,description:`Allow registering and installing an app with no registration`},{flags:`--yes`,description:`Allow object and field deletions without asking`}],examples:[`twenty app dev --remote dev`,`twenty app dev --create --no-delete`,`twenty app dev --format ndjson --no-delete`],outputModes:[`human`,`ndjson`],writes:!0,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`,`UPLOAD_FILE`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-dev-command-BOAYsAKr.cjs"))).runAppDevCommand},r={path:[`app`,`add`],description:`Add an object, field, logic function or front component to an app`,arguments:[{name:`entity`,description:`object, field, logic-function or front-component (prompted when omitted)`,required:!1}],options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--name <name>`,description:`Definition name; also determines the generated filename`},{flags:`--create-view`,description:`Create a table view for the new object`},{flags:`--create-navigation-menu-item`,description:`Create a navigation menu item for the new object`},{flags:`--create-page-layout`,description:`Create a record page layout and its fields view for the new object`},{flags:`--name-plural <name>`,description:`Plural API name (object)`},{flags:`--label <label>`,description:`Display label (object or field; default: derived from name)`},{flags:`--label-plural <label>`,description:`Plural display label (object; default: derived from plural name)`},{flags:`--type <type>`,description:`Field type, for example TEXT, NUMBER or RELATION (default: TEXT)`},{flags:`--object <uuid>`,description:`Parent object universal identifier (field)`},{flags:`--description <text>`,description:`Field description`},{flags:`--target-object <uuid>`,description:`Target object universal identifier (relation field)`},{flags:`--target-field <uuid>`,description:`Target field universal identifier (relation field)`},{flags:`--relation-type <type>`,description:`ONE_TO_MANY or MANY_TO_ONE (relation field; default: ONE_TO_MANY)`},{flags:`--on-delete <action>`,description:`CASCADE, RESTRICT, SET_NULL, NO_ACTION or None (relation field; default: CASCADE)`}],examples:[`twenty app add`,`twenty app add object --name invoice --name-plural invoices --no-input`,`twenty app add object --name invoice --name-plural invoices --create-view --create-navigation-menu-item --create-page-layout --no-input`,`twenty app add field --name amount --type NUMBER --object <object-universal-identifier> --json`,`twenty app add logic-function --name send-invoice --no-input`,`twenty app add front-component --name invoice-panel --no-input`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-app-add-command-wpCH-Lp9.cjs"))).runAppAddCommand},i={path:[`app`,`exec`],description:`Execute a deployed app logic function as the signed-in user`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--name <name>`,description:`Exact deployed function name`},{flags:`--universal-identifier <id>`,description:`Function universal identifier`},{flags:`--post-install`,description:`Execute the post-install hook without installing the app`},{flags:`--pre-install`,description:`Execute the pre-install hook without installing the app`},{flags:`--uninstall-hook`,description:`Execute the uninstall hook without uninstalling the app`},{flags:`--payload <json>`,description:`JSON object, @file or - for stdin (default: {})`}],examples:[`twenty app exec --name add-numbers --remote dev`,`twenty app exec --name add-numbers --payload @payload.json --json`,`twenty app exec --post-install --payload '{}'`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`,`WORKFLOWS`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-exec-command-Fwi80y3g.cjs"))).runAppExecCommand},a={path:[`app`,`generate-client`],description:`Regenerate the app's typed API client from the workspace schema, without building or syncing`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`}],examples:[`twenty app generate-client --remote dev`,`twenty app generate-client --path ./apps/billing --json`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-app-generate-client-command-DidOpqNE.cjs"))).runAppGenerateClientCommand},o={path:[`app`,`logs`],description:`Watch new logic-function logs from this app`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--name <name>`,description:`Filter all functions with this exact name within the app`},{flags:`--universal-identifier <id>`,description:`Filter one function by universal identifier`}],examples:[`twenty app logs --remote dev`,`twenty app logs --name add-numbers --remote dev`,`twenty app logs --format ndjson`],outputModes:[`human`,`ndjson`],writes:!1,needsProject:!0,needsTarget:!0,requiredPermissions:[`WORKFLOWS`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-logs-command-C-9ZyGau.cjs"))).runAppLogsCommand},s={path:[`app`,`apply`],description:`Build the app, preview the changes, then upload and sync it to the workspace`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--no-delete`,description:`Keep remote entities missing from the app source`},{flags:`--create`,description:`Register the app and install it in the workspace if it has no registration yet`},{flags:`--yes`,description:`Apply object and field deletions without asking; does not change which entities are deleted`}],examples:[`twenty app apply --remote dev`,`twenty app apply --create --json`,`twenty app apply --no-delete`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`,`UPLOAD_FILE`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-apply-command-CPocg1Xz.cjs"))).runAppApplyCommand},c={path:[`app`,`build`],description:`Build the app with the CLI and report the artifacts`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`}],examples:[`twenty app build`,`twenty app build --path ./apps/billing --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!0,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-app-build-command-DSGpIZBT.cjs"))).runAppBuildCommand},l={path:[`app`,`init`],description:`Create an app from the template bundled with this CLI, without installing anything`,arguments:[{name:`name`,description:`Package name of the app, for example my-app`,required:!0}],options:[{flags:`--path <directory>`,description:`Directory to create (default: ./<name>)`},{flags:`--display-name <name>`,description:`Name shown in Twenty (default: derived from the package name)`},{flags:`--description <text>`,description:`Description shown in Twenty`}],examples:[`twenty app init my-app`,`twenty app init billing --path ./apps/billing --display-name Billing --json`],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-app-init-command-DRFYqMMh.cjs"))).runAppInitCommand},u={path:[`app`,`pull`],description:`Pull workspace metadata into an existing app project`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--universal-identifier <uuid>`,description:`Application to pull when this project has no application definition`},{flags:`--verbose`,description:`List coverage details`}],examples:[`twenty app pull --remote dev`,`twenty app pull --path ./apps/billing --json`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-pull-command-r_NjC_Rk.cjs"))).runAppPullCommand},d={path:[`app`,`plan`],description:`Build the app and preview metadata changes without applying them`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--no-delete`,description:`Keep remote entities missing from the app source`}],examples:[`twenty app plan --remote dev`,`twenty app plan --path ./apps/billing --no-delete --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-plan-command-CT1SlcdX.cjs"))).runAppPlanCommand},f={path:[`app`,`translations`,`extract`],description:`Extract app strings and update translation catalogs`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--locale <locale>`,description:`Create a target locale catalog if missing, for example fr-FR`}],examples:[`twenty app translations extract`,`twenty app translations extract --locale fr-FR`,`twenty app translations extract --path ./apps/billing --json`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-app-translations-extract-command-Ba66GX7e.cjs"))).runAppTranslationsExtractCommand},p={path:[`app`,`typecheck`],description:`Typecheck the app with its project TypeScript, without building`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`}],examples:[`twenty app typecheck`,`twenty app typecheck --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!0,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-app-typecheck-command-MAxB7Yg3.cjs"))).runAppTypecheckCommand},m={path:[`app`,`uninstall`],description:`Uninstall the app from the workspace, deleting its objects, fields and their data`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--universal-identifier <id>`,description:`Uninstall the app with this universal identifier, works without a local project`},{flags:`--yes`,description:`Uninstall without asking`}],examples:[`twenty app uninstall --remote dev`,`twenty app uninstall --yes --json`,`twenty app uninstall --universal-identifier <id> --yes`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-uninstall-command-BzYSsL5a.cjs"))).runAppUninstallCommand},h={path:[`auth`,`login`],description:`Sign in with your browser or an API key, and save the remote`,options:[{flags:`--with-token`,description:`Read an API key from standard input`},{flags:`--url <url>`,description:`Twenty server URL, for example https://acme.twenty.com`},{flags:`--name <name>`,description:`Name of the remote to save (defaults to "default")`},{flags:`--use`,description:`Make this remote the default`},{flags:`--replace`,description:`Point an existing remote at a different URL`}],examples:[`twenty auth login --url https://acme.twenty.com`,`twenty auth login --url https://acme.twenty.com --name prod --use`,`printf '%s' "$TWENTY_API_KEY" | twenty auth login --with-token --url https://acme.twenty.com --name prod --use`,`twenty auth login --with-token --remote prod < api-key.txt`],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-auth-login-command-Cb3bITQj.cjs"))).runAuthLoginCommand},g={path:[`auth`,`logout`],description:`Forget the credentials of a saved remote, keeping the remote`,examples:[`twenty auth logout --remote staging`],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-auth-logout-command-iC22soKN.cjs"))).runAuthLogoutCommand},_={path:[`auth`,`status`],description:`Show which workspace commands use and check its credentials`,outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-auth-status-command-C0rdb747.cjs"))).runAuthStatusCommand},v={path:[`auth`,`token`],description:`Print the credential commands send, for scripts`,examples:[`curl -H "Authorization: Bearer $(twenty auth token)" https://acme.twenty.com/rest/companies`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-auth-token-command-D4geJ-rx.cjs"))).runAuthTokenCommand},y={path:[`api`,`graphql`],description:`Send a GraphQL query or mutation`,options:[{flags:`--query <query>`,description:`GraphQL document: inline, @file.graphql, or - for standard input`,required:!0},{flags:`--variables <json>`,description:`Variables as a JSON object: inline, @file.json, or - for standard input`},{flags:`--metadata`,description:`Send to the metadata API instead of the core API`}],examples:[`twenty api graphql --query '{ companies(first: 2) { edges { node { name } } } }'`,`twenty api graphql --metadata --query '{ currentWorkspace { displayName } }'`,`twenty api graphql --query @create-company.graphql --variables @variables.json`],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-api-graphql-command-Df2FAGpA.cjs"))).runApiGraphqlCommand},b={path:[`api`,`rest`],description:`Send a request to the REST API`,arguments:[{name:`path`,description:`Path under the API URL, for example /rest/companies`,required:!0}],options:[{flags:`-X, --method <method>`,description:`HTTP method, defaults to GET; required with --body`,choices:[`GET`,`POST`,`PATCH`,`PUT`,`DELETE`]},{flags:`--body <json>`,description:`Request body: JSON, @file.json, or - for standard input`}],examples:[`twenty api rest '/rest/companies?limit=5'`,`twenty api rest /rest/companies --method POST --body '{"name":"Linear"}'`,`twenty api rest /rest/companies/<id> --method PATCH --body @changes.json`],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-api-rest-command-2YvvMh8h.cjs"))).runApiRestCommand},x={WORKSPACE:`Workspace:`,APP:`App development:`,TOOLS:`Tools:`},S={path:[`commands`],description:`List the available commands`,helpGroup:x.TOOLS,outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-commands-command-D0P3mHHz.cjs"))).runCommandsCommand},C={path:[`data`,`get`],description:`Inspect a record by id`,arguments:[{name:`object`,description:`Exact singular or plural API name`,required:!0},{name:`id`,description:`Record id`,required:!0}],examples:[`twenty data get companies <id>`,`twenty data get people <id> --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-data-get-command-D7czgisf.cjs"))).runDataGetCommand},w={path:[`data`,`list`],description:`List records with REST filters and pagination`,arguments:[{name:`object`,description:`Exact singular or plural API name`,required:!0}],options:[{flags:`--filter <expression>`,description:`REST filter expression, passed through unchanged`},{flags:`--order-by <expression>`,description:`REST order_by expression, passed through unchanged`},{flags:`--fields <names>`,description:`Comma-separated human table columns; JSON and NDJSON retain full records`},{flags:`--limit <count>`,description:`Records per page, 1–200 (default: 50)`},{flags:`--cursor <cursor>`,description:`Start after this opaque REST cursor`},{flags:`--all`,description:`Read every remaining page, bounded unless --format ndjson is used`}],examples:[`twenty data list companies --limit 20`,`twenty data list companies --filter 'employees[gte]:5000' --order-by 'employees[DescNullsLast]'`,`twenty data list people --all --format ndjson`],outputModes:[`human`,`json`,`ndjson`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-data-list-command-CUp_FN_I.cjs"))).runDataListCommand},T={path:[`doctor`],description:`Diagnose CLI, app SDK and workspace connection problems`,helpGroup:x.TOOLS,options:[{flags:`--path <directory>`,description:`App directory to inspect`},{flags:`--offline`,description:`Skip network checks`}],examples:[`twenty doctor`,`twenty doctor --remote staging --path ./my-app --json`,`twenty doctor --offline`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-doctor-command-ClisEoI5.cjs"))).runDoctorCommand},E={path:[`metadata`,`object`,`describe`],description:`Describe an object`,arguments:[{name:`object`,description:`Exact singular or plural API name`,required:!0}],examples:[`twenty metadata object describe companies`,`twenty metadata object describe person --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-metadata-object-describe-command--cIPFkWW.cjs"))).runMetadataObjectDescribeCommand},D={path:[`metadata`,`field`,`list`],description:`List fields and who owns each one`,arguments:[{name:`object`,description:`Exact singular or plural API name`,required:!0}],options:[{flags:`--all`,description:`Include system fields`}],examples:[`twenty metadata field list companies`,`twenty metadata field list companies --all --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-metadata-field-list-command-CpIUXOmy.cjs"))).runMetadataFieldListCommand},O={path:[`metadata`,`field`,`describe`],description:`Describe a field, its constraints, options and relations`,arguments:[{name:`object`,description:`Exact singular or plural object API name`,required:!0},{name:`field`,description:`Exact field API name, including system fields`,required:!0}],examples:[`twenty metadata field describe companies tier`,`twenty metadata field describe people company --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-metadata-field-describe-command-7xrRVRwr.cjs"))).runMetadataFieldDescribeCommand},k={path:[`metadata`,`object`,`list`],description:`List objects and who owns each one`,options:[{flags:`--all`,description:`Include system objects`}],examples:[`twenty metadata object list`,`twenty metadata object list --all --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-metadata-object-list-command-CQ1jcSJc.cjs"))).runMetadataObjectListCommand},A={path:[`open`],description:`Open the workspace in your browser`,helpGroup:x.WORKSPACE,arguments:[{name:`page`,description:`Page to open, for example settings/applications`,required:!1}],options:[{flags:`--url-only`,description:`Print the address instead of opening a browser`}],examples:[`twenty open`,`twenty open settings/applications`,`twenty open --remote staging --url-only --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-open-command-DLe3PYqB.cjs"))).runOpenCommand},j={path:[`remote`,`list`],description:`List saved remotes`,outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-remote-list-command-DV-Ruk98.cjs"))).runRemoteListCommand},M={path:[`remote`,`remove`],description:`Remove a saved remote and its credentials`,arguments:[{name:`name`,description:`Saved remote`,required:!0}],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-remote-remove-command-C1JeH5mK.cjs"))).runRemoteRemoveCommand},N={path:[`remote`,`rename`],description:`Rename a saved remote`,arguments:[{name:`current`,description:`Current name`,required:!0},{name:`new`,description:`New name`,required:!0}],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-remote-rename-command-CCVu4hEw.cjs"))).runRemoteRenameCommand},P={path:[`remote`,`use`],description:`Make a saved remote the default`,arguments:[{name:`name`,description:`Saved remote`,required:!0}],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-remote-use-command-BvqWgEsP.cjs"))).runRemoteUseCommand},F={path:[`version`],description:`Print version information`,helpGroup:x.TOOLS,outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-version-command-DdKb9JL0.cjs"))).runVersionCommand},I=[r,s,n,i,o,c,a,l,d,u,t,f,p,e,m,h,g,_,v,j,P,N,M,y,b,S,w,C,T,k,E,D,O,A,F],L=e=>e.path.join(` `),R={JSON:`--json`,FORMAT:`--format <format>`,REMOTE:`-r, --remote <name>`,NO_INPUT:`--no-input`,HELP:`-h, --help`,VERSION:`-v, --version`};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return R}});
|
|
1
|
+
var e={path:[`app`,`install`],description:`Install a registered app package in the target workspace`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--universal-identifier <id>`,description:`Registered app universal identifier, works without a local project`}],examples:[`twenty app install --remote dev`,`twenty app install --path ./apps/billing --json`,`twenty app install --universal-identifier <id> --remote staging --json`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-install-command-AG25zpGx.cjs"))).runAppInstallCommand},t={path:[`app`,`publish`],description:`Build and publish the app to npm or a private Twenty registry`,options:[{flags:`--private`,description:`Publish to a Twenty server registry using --remote or the active target`},{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--tag <tag>`,description:`npm dist-tag, for example beta or next`}],examples:[`twenty app publish`,`twenty app publish --private --remote dev`,`twenty app publish --path ./apps/billing --tag beta --json`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-app-publish-command-9zd_f_a3.cjs"))).runAppPublishCommand},n={path:[`app`,`dev`],description:`Watch app source, build complete snapshots and sync changes to the workspace`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--no-delete`,description:`Keep remote entities missing from the app source`},{flags:`--create`,description:`Allow registering and installing an app with no registration`},{flags:`--yes`,description:`Allow object and field deletions without asking`}],examples:[`twenty app dev --remote dev`,`twenty app dev --create --no-delete`,`twenty app dev --format ndjson --no-delete`],outputModes:[`human`,`ndjson`],writes:!0,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`,`UPLOAD_FILE`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-dev-command-DkerkLC8.cjs"))).runAppDevCommand},r={path:[`app`,`add`],description:`Add an object, field, logic function or front component to an app`,arguments:[{name:`entity`,description:`object, field, logic-function or front-component (prompted when omitted)`,required:!1}],options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--name <name>`,description:`Definition name; also determines the generated filename`},{flags:`--create-view`,description:`Create a table view for the new object`},{flags:`--create-navigation-menu-item`,description:`Create a navigation menu item for the new object`},{flags:`--create-page-layout`,description:`Create a record page layout and its fields view for the new object`},{flags:`--name-plural <name>`,description:`Plural API name (object)`},{flags:`--label <label>`,description:`Display label (object or field; default: derived from name)`},{flags:`--label-plural <label>`,description:`Plural display label (object; default: derived from plural name)`},{flags:`--type <type>`,description:`Field type, for example TEXT, NUMBER or RELATION (default: TEXT)`},{flags:`--object <uuid>`,description:`Parent object universal identifier (field)`},{flags:`--description <text>`,description:`Field description`},{flags:`--target-object <uuid>`,description:`Target object universal identifier (relation field)`},{flags:`--target-field <uuid>`,description:`Target field universal identifier (relation field)`},{flags:`--relation-type <type>`,description:`ONE_TO_MANY or MANY_TO_ONE (relation field; default: ONE_TO_MANY)`},{flags:`--on-delete <action>`,description:`CASCADE, RESTRICT, SET_NULL, NO_ACTION or None (relation field; default: CASCADE)`}],examples:[`twenty app add`,`twenty app add object --name invoice --name-plural invoices --no-input`,`twenty app add object --name invoice --name-plural invoices --create-view --create-navigation-menu-item --create-page-layout --no-input`,`twenty app add field --name amount --type NUMBER --object <object-universal-identifier> --json`,`twenty app add logic-function --name send-invoice --no-input`,`twenty app add front-component --name invoice-panel --no-input`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-app-add-command-C0ojf2K6.cjs"))).runAppAddCommand},i={path:[`app`,`exec`],description:`Execute a deployed app logic function as the signed-in user`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--name <name>`,description:`Exact deployed function name`},{flags:`--universal-identifier <id>`,description:`Function universal identifier`},{flags:`--post-install`,description:`Execute the post-install hook without installing the app`},{flags:`--pre-install`,description:`Execute the pre-install hook without installing the app`},{flags:`--uninstall-hook`,description:`Execute the uninstall hook without uninstalling the app`},{flags:`--payload <json>`,description:`JSON object, @file or - for stdin (default: {})`}],examples:[`twenty app exec --name add-numbers --remote dev`,`twenty app exec --name add-numbers --payload @payload.json --json`,`twenty app exec --post-install --payload '{}'`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`,`WORKFLOWS`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-exec-command-CpNraBBq.cjs"))).runAppExecCommand},a={path:[`app`,`generate-client`],description:`Regenerate the app's typed API client from the workspace schema, without building or syncing`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`}],examples:[`twenty app generate-client --remote dev`,`twenty app generate-client --path ./apps/billing --json`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-app-generate-client-command-a5IQE60M.cjs"))).runAppGenerateClientCommand},o={path:[`app`,`logs`],description:`Watch new logic-function logs from this app`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--name <name>`,description:`Filter all functions with this exact name within the app`},{flags:`--universal-identifier <id>`,description:`Filter one function by universal identifier`}],examples:[`twenty app logs --remote dev`,`twenty app logs --name add-numbers --remote dev`,`twenty app logs --format ndjson`],outputModes:[`human`,`ndjson`],writes:!1,needsProject:!0,needsTarget:!0,requiredPermissions:[`WORKFLOWS`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-logs-command-Dd-OBwhF.cjs"))).runAppLogsCommand},s={path:[`app`,`apply`],description:`Build the app, preview the changes, then upload and sync it to the workspace`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--no-delete`,description:`Keep remote entities missing from the app source`},{flags:`--create`,description:`Register the app and install it in the workspace if it has no registration yet`},{flags:`--yes`,description:`Apply object and field deletions without asking; does not change which entities are deleted`}],examples:[`twenty app apply --remote dev`,`twenty app apply --create --json`,`twenty app apply --no-delete`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`,`UPLOAD_FILE`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-apply-command-DM_46_Gl.cjs"))).runAppApplyCommand},c={path:[`app`,`build`],description:`Build the app with the CLI and report the artifacts`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`}],examples:[`twenty app build`,`twenty app build --path ./apps/billing --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!0,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-app-build-command-DA7o-ebo.cjs"))).runAppBuildCommand},l={path:[`app`,`init`],description:`Create an app from the template bundled with this CLI, without installing anything`,arguments:[{name:`name`,description:`Package name of the app, for example my-app`,required:!0}],options:[{flags:`--path <directory>`,description:`Directory to create (default: ./<name>)`},{flags:`--display-name <name>`,description:`Name shown in Twenty (default: derived from the package name)`},{flags:`--description <text>`,description:`Description shown in Twenty`}],examples:[`twenty app init my-app`,`twenty app init billing --path ./apps/billing --display-name Billing --json`],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-app-init-command-ktxmLunJ.cjs"))).runAppInitCommand},u={path:[`app`,`pull`],description:`Pull workspace metadata into an existing app project`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--universal-identifier <uuid>`,description:`Application to pull when this project has no application definition`},{flags:`--verbose`,description:`List coverage details`}],examples:[`twenty app pull --remote dev`,`twenty app pull --path ./apps/billing --json`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-pull-command-CdArJFPT.cjs"))).runAppPullCommand},d={path:[`app`,`plan`],description:`Build the app and preview metadata changes without applying them`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--no-delete`,description:`Keep remote entities missing from the app source`}],examples:[`twenty app plan --remote dev`,`twenty app plan --path ./apps/billing --no-delete --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-plan-command-7Bi90BQp.cjs"))).runAppPlanCommand},f={path:[`app`,`translations`,`extract`],description:`Extract app strings and update translation catalogs`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--locale <locale>`,description:`Create a target locale catalog if missing, for example fr-FR`}],examples:[`twenty app translations extract`,`twenty app translations extract --locale fr-FR`,`twenty app translations extract --path ./apps/billing --json`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-app-translations-extract-command-DrUZkCUW.cjs"))).runAppTranslationsExtractCommand},p={path:[`app`,`typecheck`],description:`Typecheck the app with its project TypeScript, without building`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`}],examples:[`twenty app typecheck`,`twenty app typecheck --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!0,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-app-typecheck-command-CQe2CTGd.cjs"))).runAppTypecheckCommand},m={path:[`app`,`uninstall`],description:`Uninstall the app from the workspace, deleting its objects, fields and their data`,options:[{flags:`--path <directory>`,description:`App directory (default: the app containing the current folder)`},{flags:`--universal-identifier <id>`,description:`Uninstall the app with this universal identifier, works without a local project`},{flags:`--yes`,description:`Uninstall without asking`}],examples:[`twenty app uninstall --remote dev`,`twenty app uninstall --yes --json`,`twenty app uninstall --universal-identifier <id> --yes`],outputModes:[`human`,`json`],writes:!0,needsProject:!0,needsTarget:!0,requiredPermissions:[`APPLICATIONS`],load:async()=>(await Promise.resolve().then(()=>require("./run-app-uninstall-command--RFHGXiH.cjs"))).runAppUninstallCommand},h={path:[`auth`,`login`],description:`Sign in with your browser or an API key, and save the remote`,options:[{flags:`--with-token`,description:`Read an API key from standard input`},{flags:`--url <url>`,description:`Twenty server URL, for example https://acme.twenty.com`},{flags:`--name <name>`,description:`Name of the remote to save (defaults to "default")`},{flags:`--use`,description:`Make this remote the default`},{flags:`--replace`,description:`Point an existing remote at a different URL`}],examples:[`twenty auth login --url https://acme.twenty.com`,`twenty auth login --url https://acme.twenty.com --name prod --use`,`printf '%s' "$TWENTY_API_KEY" | twenty auth login --with-token --url https://acme.twenty.com --name prod --use`,`twenty auth login --with-token --remote prod < api-key.txt`],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-auth-login-command-Cb3bITQj.cjs"))).runAuthLoginCommand},g={path:[`auth`,`logout`],description:`Forget the credentials of a saved remote, keeping the remote`,examples:[`twenty auth logout --remote staging`],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-auth-logout-command-iC22soKN.cjs"))).runAuthLogoutCommand},_={path:[`auth`,`status`],description:`Show which workspace commands use and check its credentials`,outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-auth-status-command-C0rdb747.cjs"))).runAuthStatusCommand},v={path:[`auth`,`token`],description:`Print the credential commands send, for scripts`,examples:[`curl -H "Authorization: Bearer $(twenty auth token)" https://acme.twenty.com/rest/companies`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-auth-token-command-D4geJ-rx.cjs"))).runAuthTokenCommand},y={path:[`api`,`graphql`],description:`Send a GraphQL query or mutation`,options:[{flags:`--query <query>`,description:`GraphQL document: inline, @file.graphql, or - for standard input`,required:!0},{flags:`--variables <json>`,description:`Variables as a JSON object: inline, @file.json, or - for standard input`},{flags:`--metadata`,description:`Send to the metadata API instead of the core API`}],examples:[`twenty api graphql --query '{ companies(first: 2) { edges { node { name } } } }'`,`twenty api graphql --metadata --query '{ currentWorkspace { displayName } }'`,`twenty api graphql --query @create-company.graphql --variables @variables.json`],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-api-graphql-command-Df2FAGpA.cjs"))).runApiGraphqlCommand},b={path:[`api`,`rest`],description:`Send a request to the REST API`,arguments:[{name:`path`,description:`Path under the API URL, for example /rest/companies`,required:!0}],options:[{flags:`-X, --method <method>`,description:`HTTP method, defaults to GET; required with --body`,choices:[`GET`,`POST`,`PATCH`,`PUT`,`DELETE`]},{flags:`--body <json>`,description:`Request body: JSON, @file.json, or - for standard input`}],examples:[`twenty api rest '/rest/companies?limit=5'`,`twenty api rest /rest/companies --method POST --body '{"name":"Linear"}'`,`twenty api rest /rest/companies/<id> --method PATCH --body @changes.json`],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-api-rest-command-2YvvMh8h.cjs"))).runApiRestCommand},x={WORKSPACE:`Workspace:`,APP:`App development:`,TOOLS:`Tools:`},S={path:[`commands`],description:`List the available commands`,helpGroup:x.TOOLS,outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-commands-command-Dp-Xzn5x.cjs"))).runCommandsCommand},C={path:[`data`,`get`],description:`Inspect a record by id`,arguments:[{name:`object`,description:`Exact singular or plural API name`,required:!0},{name:`id`,description:`Record id`,required:!0}],examples:[`twenty data get companies <id>`,`twenty data get people <id> --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-data-get-command-D7czgisf.cjs"))).runDataGetCommand},w={path:[`data`,`list`],description:`List records with REST filters and pagination`,arguments:[{name:`object`,description:`Exact singular or plural API name`,required:!0}],options:[{flags:`--filter <expression>`,description:`REST filter expression, passed through unchanged`},{flags:`--order-by <expression>`,description:`REST order_by expression, passed through unchanged`},{flags:`--fields <names>`,description:`Comma-separated human table columns; JSON and NDJSON retain full records`},{flags:`--limit <count>`,description:`Records per page, 1–200 (default: 50)`},{flags:`--cursor <cursor>`,description:`Start after this opaque REST cursor`},{flags:`--all`,description:`Read every remaining page, bounded unless --format ndjson is used`}],examples:[`twenty data list companies --limit 20`,`twenty data list companies --filter 'employees[gte]:5000' --order-by 'employees[DescNullsLast]'`,`twenty data list people --all --format ndjson`],outputModes:[`human`,`json`,`ndjson`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-data-list-command-CUp_FN_I.cjs"))).runDataListCommand},T={path:[`doctor`],description:`Diagnose CLI, app SDK and workspace connection problems`,helpGroup:x.TOOLS,options:[{flags:`--path <directory>`,description:`App directory to inspect`},{flags:`--offline`,description:`Skip network checks`}],examples:[`twenty doctor`,`twenty doctor --remote staging --path ./my-app --json`,`twenty doctor --offline`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-doctor-command-C-gOPvp9.cjs"))).runDoctorCommand},E={path:[`metadata`,`object`,`describe`],description:`Describe an object`,arguments:[{name:`object`,description:`Exact singular or plural API name`,required:!0}],examples:[`twenty metadata object describe companies`,`twenty metadata object describe person --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-metadata-object-describe-command--cIPFkWW.cjs"))).runMetadataObjectDescribeCommand},D={path:[`metadata`,`field`,`list`],description:`List fields and who owns each one`,arguments:[{name:`object`,description:`Exact singular or plural API name`,required:!0}],options:[{flags:`--all`,description:`Include system fields`}],examples:[`twenty metadata field list companies`,`twenty metadata field list companies --all --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-metadata-field-list-command-CpIUXOmy.cjs"))).runMetadataFieldListCommand},O={path:[`metadata`,`field`,`describe`],description:`Describe a field, its constraints, options and relations`,arguments:[{name:`object`,description:`Exact singular or plural object API name`,required:!0},{name:`field`,description:`Exact field API name, including system fields`,required:!0}],examples:[`twenty metadata field describe companies tier`,`twenty metadata field describe people company --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-metadata-field-describe-command-7xrRVRwr.cjs"))).runMetadataFieldDescribeCommand},k={path:[`metadata`,`object`,`list`],description:`List objects and who owns each one`,options:[{flags:`--all`,description:`Include system objects`}],examples:[`twenty metadata object list`,`twenty metadata object list --all --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-metadata-object-list-command-CQ1jcSJc.cjs"))).runMetadataObjectListCommand},A={path:[`open`],description:`Open the workspace in your browser`,helpGroup:x.WORKSPACE,arguments:[{name:`page`,description:`Page to open, for example settings/applications`,required:!1}],options:[{flags:`--url-only`,description:`Print the address instead of opening a browser`}],examples:[`twenty open`,`twenty open settings/applications`,`twenty open --remote staging --url-only --json`],outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!0,load:async()=>(await Promise.resolve().then(()=>require("./run-open-command-DLe3PYqB.cjs"))).runOpenCommand},j={path:[`remote`,`list`],description:`List saved remotes`,outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-remote-list-command-DV-Ruk98.cjs"))).runRemoteListCommand},M={path:[`remote`,`remove`],description:`Remove a saved remote and its credentials`,arguments:[{name:`name`,description:`Saved remote`,required:!0}],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-remote-remove-command-C1JeH5mK.cjs"))).runRemoteRemoveCommand},N={path:[`remote`,`rename`],description:`Rename a saved remote`,arguments:[{name:`current`,description:`Current name`,required:!0},{name:`new`,description:`New name`,required:!0}],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-remote-rename-command-CCVu4hEw.cjs"))).runRemoteRenameCommand},P={path:[`remote`,`use`],description:`Make a saved remote the default`,arguments:[{name:`name`,description:`Saved remote`,required:!0}],outputModes:[`human`,`json`],writes:!0,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-remote-use-command-BvqWgEsP.cjs"))).runRemoteUseCommand},F={path:[`version`],description:`Print version information`,helpGroup:x.TOOLS,outputModes:[`human`,`json`],writes:!1,needsProject:!1,needsTarget:!1,load:async()=>(await Promise.resolve().then(()=>require("./run-version-command-D4R17bRL.cjs"))).runVersionCommand},I=[r,s,n,i,o,c,a,l,d,u,t,f,p,e,m,h,g,_,v,j,P,N,M,y,b,S,w,C,T,k,E,D,O,A,F],L=e=>e.path.join(` `),R={JSON:`--json`,FORMAT:`--format <format>`,REMOTE:`-r, --remote <name>`,NO_INPUT:`--no-input`,HELP:`-h, --help`,VERSION:`-v, --version`};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return R}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./application-DOWikeQt.cjs"),r=require("./cli-error-CSsayo0u.cjs"),i=require("./resolve-source-sdk-
|
|
1
|
+
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./application-DOWikeQt.cjs"),r=require("./cli-error-CSsayo0u.cjs"),i=require("./resolve-source-sdk-BNnltA8w.cjs"),a=require("./create-cancelled-error-DgrNfOv2.cjs"),o=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs");var s=e.t(),c=e=>{if(!t.u(e))return;if((0,s.isNull)(e.application))return{data:{application:null}};let r=e.application;if(!(!t.u(r)||!(0,s.isString)(r.universalIdentifier)||!n.a(r.universalIdentifier)||!(0,s.isString)(r.displayName)&&!(0,s.isNull)(r.displayName)))return{data:{application:{universalIdentifier:r.universalIdentifier,displayName:r.displayName}}}},l=async({appPath:e,signal:t,warn:n})=>{t.throwIfAborted();let s=await i.t({appPath:e,warn:n}),l=await o.n({request:{type:`readSourceIdentity`,appPath:e},signal:t});if(t.aborted)throw a.t();let u=o.o({value:l.result,parseData:c}),d=[...u.diagnostics,...o.t(l.output)];if(!u.success)throw new r.t({code:u.error.code===`SDK_SOURCE_UNSUPPORTED`?`SDK_SOURCE_UNSUPPORTED`:`IDENTITY_READ_FAILED`,message:u.error.message,hint:u.error.hint??(u.error.code===`SDK_SOURCE_UNSUPPORTED`?`Use the SDK define functions, rename local helpers with the same names, or install a compatible twenty-sdk version.`:void 0),details:{...u.error.details,sdkVersion:s.version,diagnostics:d}});return{...u.data,diagnostics:d}};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return l}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./application-DOWikeQt.cjs"),r=require("./cli-error-CSsayo0u.cjs"),i=require("./is-same-universal-identifier-BCBib3RP.cjs"),a=require("./read-command-values-uSJqBG_E.cjs"),o=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),s=require("./read-app-identity-
|
|
1
|
+
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./application-DOWikeQt.cjs"),r=require("./cli-error-CSsayo0u.cjs"),i=require("./is-same-universal-identifier-BCBib3RP.cjs"),a=require("./read-command-values-uSJqBG_E.cjs"),o=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),s=require("./read-app-identity-Da5yI23t.cjs"),c=require("./resolve-app-project-B0KRR-xp.cjs"),l=require("./is-application-not-found-error-Cja7iQrL.cjs"),u=require("./create-metadata-client-9IF8ArjT.cjs"),d=require("./create-app-not-installed-error-DY-iuPPx.cjs");var f=e.t(),p=async({universalIdentifier:e,target:n,signal:a})=>{let o=(await u.t({target:n,signal:a}).query({__name:`FindInstalledApplication`,findOneApplication:{__args:{universalIdentifier:e},name:!0,universalIdentifier:!0,canBeUninstalled:!0}}).catch(t=>{throw l.t({error:t,field:`findOneApplication`})?d.t({universalIdentifier:e,apiUrl:n.apiUrl}):t}))?.findOneApplication;if(!t.u(o)||!(0,f.isNonEmptyString)(o.name)||!i.t({value:o.universalIdentifier,universalIdentifier:e})||!(0,f.isBoolean)(o.canBeUninstalled))throw new r.t({code:`INVALID_RESPONSE`,message:`The server returned an invalid installed application.`});return{name:o.name,canBeUninstalled:o.canBeUninstalled}},m=async({context:e,onIdentityRead:i})=>{let l=a.r(e.options,`universalIdentifier`);if(t.Ut(l)){if(!n.a(l))throw new r.t({code:`INVALID_INPUT`,exitCode:r.n.USAGE,message:`--universal-identifier must be a UUID of version 4 or later, not ${l}.`});return l.toLowerCase()}let{options:u,output:d,outputMode:f,signal:p}=e,m=await s.t({appPath:(await c.t({explicitPath:a.r(u,`path`),workingDirectory:process.cwd()})).path,signal:p,warn:d.warn});if(!t.Ut(m.application))throw new r.t({code:`INVALID_INPUT`,exitCode:r.n.USAGE,message:`This project has no application definition.`});if(f===`human`)for(let e of m.diagnostics)d.progress({message:o.s(e)});return i(),m.application.universalIdentifier.toLowerCase()};Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return m}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./build-CX6FBrbu.cjs"),t=require("./check-node-requirement-
|
|
1
|
+
const e=require("./build-CX6FBrbu.cjs"),t=require("./check-node-requirement-B_hf2E32.cjs"),n=require("./constants-D-caeNc5-9rDzSg5B.cjs"),r=require("./read-json-object-BXZs97qz.cjs"),i=require("./resolve-inside-sdk-DiEOTO12.cjs"),a=require("./has-yarn-plug-and-play-X3ay5Xl0.cjs"),o=require("./cli-error-CSsayo0u.cjs"),s=require("./fs-utils-Bl1fQcaJ.cjs");let c=require("node:fs/promises"),l=require("node:path"),u=require("node:module");var d=e.t(),f=e.i(t.a()),p=async e=>{for(let t of a.n(e)){let i=(0,l.join)(t,`node_modules`,`twenty-sdk`);if(!await s.i(i))continue;let a=await r.t((0,l.join)(i,`package.json`));if(!n.Ut(a)||a.name!==`twenty-sdk`)throw new o.t({code:`TOOLING_UNSUPPORTED`,message:`The twenty-sdk installation at ${i} is incomplete: it has no readable twenty-sdk package.json.`,hint:`Reinstall the app's dependencies (for example with yarn install), then try again.`,details:{appPath:e,sdkPath:i}});return{path:await(0,c.realpath)(i),packageJson:a}}},m=async e=>{throw await a.t(e)?new o.t({code:`TOOLING_UNSUPPORTED`,message:`This app uses Yarn Plug'n'Play, which the twenty CLI cannot load the SDK from.`,hint:`Set nodeLinker: node-modules in .yarnrc.yml, then run yarn install.`,details:{appPath:e}}):new o.t({code:`SDK_NOT_INSTALLED`,message:`twenty-sdk is not installed for this app.`,hint:`Install the app's dependencies (for example with yarn install), then try again.`,details:{appPath:e}})},h=async e=>{let t=await p(e);return n.Ut(t)?t:m(e)},g=`>=1.23.0`,_=[`twenty-sdk/define`,`twenty-sdk/front-component`],v=async({appPath:e,warn:r})=>{let a=await h(e),s=(0,d.isString)(a.packageJson.version)?a.packageJson.version:`unknown`,c={appPath:e,sdkPath:a.path,sdkVersion:s},p=(0,u.createRequire)((0,l.join)(e,`package.json`)).resolve,m=_.filter(e=>!n.Ut(i.t({resolveFromApp:p,specifier:e,sdkPath:a.path})));if(!(0,f.default)(s,g,{includePrerelease:!0})||m.length>0)throw new o.t({code:`SDK_SOURCE_UNSUPPORTED`,message:`twenty-sdk ${s} cannot load app source with this CLI. Source loading needs twenty-sdk ${g} with its define and front-component entry points.`,hint:`Install a compatible twenty-sdk version in this app.`,details:{...c,supportedRange:g,missingEntryPoints:m}});let v=n.u(a.packageJson.engines)?a.packageJson.engines.node:void 0;if(n.Ut(v)){let e=(0,d.isString)(v)?t.t({version:process.versions.node,range:v}):`invalid`;if(e===`outsideRange`)r?.({code:`NODE_VERSION_UNTESTED`,message:`twenty-sdk ${s} declares Node ${String(v)}; continuing on Node ${process.versions.node}, which is outside that range.`});else if(e!==`satisfied`)throw new o.t({code:e===`invalid`?`SDK_SOURCE_UNSUPPORTED`:`NODE_VERSION_UNSUPPORTED`,message:`twenty-sdk ${s} declares Node ${String(v)}; this is Node ${process.versions.node}.`,hint:e===`invalid`?`Install a twenty-sdk version with a valid Node requirement.`:`Switch to a supported Node version, then try again.`,details:{...c,requiredNode:v}})}return{version:s,packagePath:a.path}};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return v}});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require("./constants-D-caeNc5-9rDzSg5B.cjs"),t=require("./application-DOWikeQt.cjs"),n=require("./cli-error-CSsayo0u.cjs"),r=require("./assert-pull-paths-BuQ1ZRvQ.cjs"),i=require("./print-typescript-value-D5kLR9wo.cjs"),a=require("./kebab-case-D0usAzG-.cjs"),o=require("./read-command-values-uSJqBG_E.cjs"),s=require("./convert-to-label-hx-g0Lvj.cjs"),c=require("./confirm-in-terminal-BxEM5lxE.cjs"),l=require("./is-interaction-allowed-CF-ko1KI.cjs"),u=require("./style-BR52fK4V.cjs"),d=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),f=require("./read-app-identity-
|
|
1
|
+
const e=require("./constants-D-caeNc5-9rDzSg5B.cjs"),t=require("./application-DOWikeQt.cjs"),n=require("./cli-error-CSsayo0u.cjs"),r=require("./assert-pull-paths-BuQ1ZRvQ.cjs"),i=require("./print-typescript-value-D5kLR9wo.cjs"),a=require("./kebab-case-D0usAzG-.cjs"),o=require("./read-command-values-uSJqBG_E.cjs"),s=require("./convert-to-label-hx-g0Lvj.cjs"),c=require("./confirm-in-terminal-BxEM5lxE.cjs"),l=require("./is-interaction-allowed-CF-ko1KI.cjs"),u=require("./style-BR52fK4V.cjs"),d=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),f=require("./read-app-identity-Da5yI23t.cjs"),p=require("./resolve-app-project-B0KRR-xp.cjs");let m=require("node:crypto"),h=require("node:fs/promises"),g=require("node:path");var _=[`object`,`field`,`logic-function`,`front-component`],v=({name:e,objectUniversalIdentifier:t})=>`import { defineNavigationMenuItem, NavigationMenuItemType } from 'twenty-sdk/define';
|
|
2
2
|
|
|
3
3
|
export default defineNavigationMenuItem({
|
|
4
4
|
universalIdentifier: '${(0,m.randomUUID)()}',
|
package/dist/chunks/{run-app-apply-command-CPocg1Xz.cjs → run-app-apply-command-DM_46_Gl.cjs}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./build-CX6FBrbu.cjs"),t=require("./utils-CvvLHbc4-CKDJ1YgX.cjs"),n=require("./constants-D-caeNc5-9rDzSg5B.cjs"),r=require("./cli-error-CSsayo0u.cjs"),i=require("./read-command-values-uSJqBG_E.cjs"),a=require("./style-BR52fK4V.cjs"),o=require("./resolve-app-project-B0KRR-xp.cjs"),s=require("./record-pull-base-DwoMDnXm.cjs"),c=require("./get-app-plan-summary-C-CQdNrh.cjs"),l=require("./format-data-value-kug8Yjt2.cjs"),u=require("./format-app-duration-gu2oRLB4.cjs"),d=require("./get-client-generation-skip-reason-BVkBgZWQ.cjs"),f=require("./run-app-operation-
|
|
1
|
+
const e=require("./build-CX6FBrbu.cjs"),t=require("./utils-CvvLHbc4-CKDJ1YgX.cjs"),n=require("./constants-D-caeNc5-9rDzSg5B.cjs"),r=require("./cli-error-CSsayo0u.cjs"),i=require("./read-command-values-uSJqBG_E.cjs"),a=require("./style-BR52fK4V.cjs"),o=require("./resolve-app-project-B0KRR-xp.cjs"),s=require("./record-pull-base-DwoMDnXm.cjs"),c=require("./get-app-plan-summary-C-CQdNrh.cjs"),l=require("./format-data-value-kug8Yjt2.cjs"),u=require("./format-app-duration-gu2oRLB4.cjs"),d=require("./get-client-generation-skip-reason-BVkBgZWQ.cjs"),f=require("./run-app-operation-BLlHL5Nk.cjs");var p=e.t(),m=({count:e,label:t,color:n})=>{let r=`${e} ${t}`;return e===0?a.i(r):a.n(n,r)},h=({applicationName:e,apiUrl:r,summary:i,upload:o,isRegistrationCreated:s,clientGeneration:c,durationMilliseconds:d})=>{let f=n.Ut(i)?[m({count:i.create,label:`added`,color:`green`}),m({count:i.update,label:`changed`,color:`yellow`}),m({count:i.delete,label:`deleted`,color:`red`})].join(a.i(` · `)):a.i(`changes not reported`),h=o.fileCount===1?`file`:`files`;return[a.o(`Applied ${l.r(e)} to ${r} ${a.i(`in ${u.t(d)}`)}`),` ${f}${a.i(` · ${o.fileCount} ${h} uploaded (${t.i(o.byteCount)})`)}`,s?a.i(` Registered the app and installed it in this workspace.`):``,c===`generated`?a.i(` Regenerated the typed API client.`):``].filter(p.isNonEmptyString).join(`
|
|
2
2
|
`)},g=async e=>{let t=performance.now(),a=e.options.delete!==!1,l,u=await s.n((await o.t({explicitPath:i.r(e.options,`path`),workingDirectory:process.cwd()})).path).catch(()=>void 0),{project:p,sdk:m,data:g,diagnostics:_}=await f.t({context:e,useHeldBuild:async t=>{l=await s.i({build:t.data,appPath:t.project.path,context:e,inferDeletionFromMissingEntities:a,isCreationApproved:i.t(e.options,`create`),isDeletionApproved:i.t(e.options,`yes`)})}});if(!n.Ut(l))throw new r.t({code:`TOOLING_UNSUPPORTED`,message:`The app worker did not keep its build snapshot for upload, so nothing was applied.`});let v=n.Ut(l.appliedActions)?c.t(l.appliedActions):void 0;n.Ut(v)||e.output.warn({code:`SYNC_REPORT_UNAVAILABLE`,message:`The sync succeeded, but the server did not return a readable list of its changes.`});let y;try{y=await s.t({appPath:p.path,universalIdentifier:l.acknowledgedUniversalIdentifier,sourceFingerprints:u,context:e}),y===`recorded`&&l.completedPhases.push(`pullBase`)}catch(t){throw s.r({error:t,phase:`pullBase`,applicationName:g.application.displayName,apiUrl:e.target.apiUrl,completedPhases:l.completedPhases,signal:e.signal})}let b=await d.t({appPath:p.path}),x=`skipped`;if(n.Ut(b))e.output.warn({code:`CLIENT_NOT_GENERATED`,message:`The app's typed API client was not regenerated: ${b}`});else try{_.push(...await d.r({appPath:p.path,applicationUniversalIdentifier:l.acknowledgedUniversalIdentifier,sdk:m,context:e})),x=`generated`,l.completedPhases.push(`clientGeneration`)}catch(t){throw s.r({error:t,phase:`clientGeneration`,applicationName:g.application.displayName,apiUrl:e.target.apiUrl,completedPhases:l.completedPhases,signal:e.signal})}let S=Math.round(performance.now()-t);return{data:{app:{path:p.path,name:p.name},sdk:{version:m.version},application:g.application,contentHash:g.contentHash,inferDeletionFromMissingEntities:a,registrationCreated:l.isRegistrationCreated,completedPhases:l.completedPhases,actions:l.appliedActions??null,summary:v??null,upload:{fileCount:l.upload.fileCount,byteCount:l.upload.byteCount},clientGeneration:x,pullBase:y,diagnostics:_,durationMilliseconds:S},human:h({applicationName:g.application.displayName,apiUrl:e.target.apiUrl,summary:v,upload:l.upload,isRegistrationCreated:l.isRegistrationCreated,clientGeneration:x,durationMilliseconds:S})}};exports.runAppApplyCommand=g;
|
package/dist/chunks/{run-app-build-command-DSGpIZBT.cjs → run-app-build-command-DA7o-ebo.cjs}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./utils-CvvLHbc4-CKDJ1YgX.cjs"),t=require("./style-BR52fK4V.cjs"),n=require("./format-app-duration-gu2oRLB4.cjs"),r=require("./cli-version.constant-
|
|
1
|
+
const e=require("./utils-CvvLHbc4-CKDJ1YgX.cjs"),t=require("./style-BR52fK4V.cjs"),n=require("./format-app-duration-gu2oRLB4.cjs"),r=require("./cli-version.constant-B92ETb2e.cjs"),i=require("./run-app-operation-BLlHL5Nk.cjs");var a={"built-logic-function":[`logic function`,`logic functions`],"built-front-component":[`front component`,`front components`],source:[`source file`,`source files`],dependencies:[`dependency file`,`dependency files`],"public-asset":[`asset`,`assets`]},o=Object.keys(a),s=e=>{let t=o.indexOf(e);return t===-1?o.length:t},c=e=>{let t=new Map;for(let n of e.files)t.set(n.role,(t.get(n.role)??0)+1);return[...t].sort(([e],[t])=>s(e)-s(t)).map(([e,t])=>`${t} ${(a[e]??[e,e])[t===1?0:1]}`).join(` · `)},l=({build:i,durationMilliseconds:a})=>{let o=i.files.reduce((e,t)=>e+t.size,0);return[t.o(`Built ${i.application.displayName} with twenty ${r.t} ${t.i(`in ${n.t(a)}`)}`),t.i(` ${i.files.length} files · ${e.i(o)} · content hash ${i.contentHash.slice(0,12)}`),t.i(` ${c(i)}`),t.i(` Nothing was uploaded.`)].join(`
|
|
2
2
|
`)},u=async e=>{let{project:t,sdk:n,data:r,diagnostics:a,durationMilliseconds:o}=await i.t({context:e});return{data:{app:{path:t.path,name:t.name},sdk:{version:n.version},application:r.application,contentHash:r.contentHash,files:r.files,manifestFormat:r.manifestFormat,manifest:r.manifest,diagnostics:a,durationMilliseconds:o},human:l({build:r,durationMilliseconds:o})}};exports.runAppBuildCommand=u;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./get-client-sdk-package-path-2U3kDCRq.cjs"),r=require("./is-inside-directory-DHVCQE5C.cjs"),i=require("./resolve-inside-sdk-DiEOTO12.cjs"),a=require("./read-watch-input-stamp-BxeOb0vI.cjs"),o=require("./cli-error-CSsayo0u.cjs"),s=require("./fs-utils-Bl1fQcaJ.cjs"),c=require("./resolve-source-sdk-
|
|
1
|
+
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./get-client-sdk-package-path-2U3kDCRq.cjs"),r=require("./is-inside-directory-DHVCQE5C.cjs"),i=require("./resolve-inside-sdk-DiEOTO12.cjs"),a=require("./read-watch-input-stamp-BxeOb0vI.cjs"),o=require("./cli-error-CSsayo0u.cjs"),s=require("./fs-utils-Bl1fQcaJ.cjs"),c=require("./resolve-source-sdk-BNnltA8w.cjs"),l=require("./create-pull-base-write-JW3ZTnaC.cjs"),u=require("./read-command-values-uSJqBG_E.cjs"),d=require("./style-BR52fK4V.cjs"),f=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),p=require("./resolve-app-project-B0KRR-xp.cjs"),m=require("./with-phase-details-Dof8Ao9R.cjs"),h=require("./to-cli-error-BBYf_wqo.cjs"),g=require("./record-pull-base-DwoMDnXm.cjs"),_=require("./read-snapshot-file-CxPJh0Bk.cjs"),v=require("./create-tooling-failure-B2FmNwR2.cjs"),y=require("./get-client-generation-skip-reason-BVkBgZWQ.cjs"),b=require("./format-progress-line-DhMnjGkz.cjs");let x=require("node:events"),S=require("node:crypto"),C=require("node:fs/promises"),w=require("node:path"),T=require("node:module"),E=require("node:timers/promises"),D=require("chokidar");var O=async({build:e,appPath:t,signal:n})=>{n.throwIfAborted();let r=_.a({build:e,appPath:t}),i=(0,w.join)(t,`.twenty`,`cli`,`snapshots`);await(0,C.mkdir)(i,{recursive:!0});let a=await(0,C.mkdtemp)((0,w.join)(i,`dev-`)),o=()=>(0,C.rm)(a,{recursive:!0,force:!0});try{for(let t of e.files){n.throwIfAborted();let e=await _.t({snapshotDirectory:r,artifact:t}),i=(0,w.join)(a,t.path);await(0,C.mkdir)((0,w.dirname)(i),{recursive:!0}),await(0,C.writeFile)(i,_.n(e),{flag:`wx`,signal:n})}return n.throwIfAborted(),{build:{...e,directory:a},release:o}}catch(e){throw await o(),e}},k=async({appPath:e,signal:n,updateWatchInputs:r,warn:i})=>{let a=await c.t({appPath:e,warn:i}),s=await g.n(e).catch(()=>void 0),l;try{let i=await f.n({request:{type:`bundleSnapshot`,appPath:e,holdSnapshot:!0,collectWatchInputs:!0},signal:n,useHeldSnapshot:async({result:t})=>{let r=f.o({value:t,parseData:f.i});r.success&&(l=await O({build:r.data,appPath:e,signal:n}))}});n.throwIfAborted();let c=f.o({value:i.result,parseData:f.i}),u=[...c.diagnostics,...f.t(i.output)];if(await r(i.watchInputs??[],c.success),!c.success)throw v.t({error:c.error,diagnostics:u,sdkVersion:a.version});if(!t.Ut(l))throw new o.t({code:`WORKER_FAILED`,message:`The build worker did not retain its dev snapshot.`});let d=i.release;if(!t.Ut(d)||!f.o({value:d,parseData:e=>e===null?{data:null}:void 0}).success)throw new o.t({code:`WORKER_FAILED`,message:`The build worker could not release its source snapshot. Stop and clean up .twenty/cli/snapshots before restarting dev.`});return{...l,contentHash:l.build.contentHash,tooling:a,diagnostics:u,sourceFingerprints:s}}catch(e){throw await l?.release(),e}},A=async e=>{let t=async e=>{try{return l.i(await(0,C.readFile)(e))}catch(e){if(o.r(e,`ENOENT`))return null;throw e}},n=[`dist/core.mjs`,`dist/core.cjs`],r=(0,w.join)(e,`dist/core/generated`);try{let t=await(0,C.readdir)(r,{recursive:!0,withFileTypes:!0});for(let r of t)(r.isFile()||r.isSymbolicLink())&&n.push((0,w.relative)(e,(0,w.join)(r.parentPath,r.name)))}catch(e){if(!o.r(e,`ENOENT`))throw e}return JSON.stringify(await Promise.all(n.sort().map(async n=>[n,await t((0,w.join)(e,n))])))},j=({appPath:e})=>{let r,a,o=()=>A(n.t({appPath:e}));return async({snapshot:s,applied:c,context:l,withBuildsPaused:u,invalidate:d})=>{let f=await y.t({appPath:e});if(t.Ut(f))return l.output.warn({code:`CLIENT_NOT_GENERATED`,message:f}),`skipped`;let p,_,v;try{p=await y.n({applicationUniversalIdentifier:c.acknowledgedUniversalIdentifier,context:l});let r=await(0,C.realpath)(n.t({appPath:e})),a=await(0,C.readFile)((0,w.join)(r,`package.json`)),s=i.t({resolveFromApp:(0,T.createRequire)((0,w.join)(r,`package.json`)).resolve,specifier:`twenty-client-sdk/generate`,sdkPath:r});if(!t.Ut(s))throw Error(`The installed twenty-client-sdk has no compatible generate entry point.`);_=(0,S.createHash)(`sha256`).update(p).update(r).update(a).update(await(0,C.readFile)(s)).digest(`hex`),v=await o()}catch(e){if(l.signal.aborted)throw m.t({error:h.t(e,l.signal),phase:`clientGeneration`,outcome:`applied`,completedPhases:c.completedPhases,hint:`The app was synced. Client generation had not started, so the previous typed API client was kept.`});return l.output.warn({code:`CLIENT_NOT_GENERATED`,message:`The app was synced, but its client inputs could not be fetched: ${h.t(e).message} The previous client was kept.`}),`skipped`}if(_===r&&v===a)return`unchanged`;let b=!1;try{await u(async()=>{l.signal.throwIfAborted(),b=!0,await y.i({appPath:e,schema:p,sdk:s.tooling,context:l}),r=_,a=await o(),c.completedPhases.push(`clientGeneration`),d()})}catch(e){throw b?g.r({error:e,phase:`clientGeneration`,applicationName:s.build.application.displayName,apiUrl:l.target.apiUrl,completedPhases:c.completedPhases,signal:l.signal}):m.t({error:h.t(e,l.signal),phase:`clientGeneration`,outcome:`applied`,completedPhases:c.completedPhases,hint:`The app was synced. Client generation had not started, so the previous typed API client was kept.`})}return`generated`}},M=e.t(),N=({message:e,code:t,percentage:n})=>(0,M.isNonEmptyString)(t)?d.s(e):b.t({message:e,percentage:n}),P=e=>{let t=[],n=Promise.resolve(),r=0;return{output:{...e.output,progress:e=>{t.length<32?t.push(e):r+=1},warn:e=>{t.length<32?t.push(e):r+=1}},emit:(i,a)=>{let o=t.splice(0);r>0&&(o.push({message:`${r} additional progress messages omitted.`}),r=0);let s=n.then(async()=>{if(a.throwIfAborted(),e.outputMode===`ndjson`)await e.output.event(`progress`,{...i,messages:o},a);else{let e=[...o.map(N),i.message].filter(e=>e.length>0).join(`
|
|
2
2
|
`);process.stderr.write(`${e}\n`)||await(0,x.once)(process.stderr,`drain`,{signal:a})}});return n=s.catch(()=>void 0),s}}},F=async({signal:e,subscribe:n,build:r,apply:i,onSkipped:a,debounceMilliseconds:o=100})=>{let s=new AbortController,c,l=e=>{s.abort(e),f()},u=()=>l(e.reason),d=new Set,f=()=>{for(let e of d)e()},p=async e=>{for(;!e();)s.signal.throwIfAborted(),await new Promise(e=>{let t=()=>{d.delete(t),e()};d.add(t)});s.signal.throwIfAborted()},m=1,h=0,g,_=!1,v=!1,y=new AbortController,b,x=()=>{m+=1,y.abort(Error(`App changed while awaiting approval.`)),f()},S=async()=>{for(;!s.signal.aborted;){await p(()=>!v&&m!==h);let n=m;if(await(0,E.setTimeout)(o,void 0,{signal:s.signal}),n!==m||v)continue;h=n,_=!0;let i;try{t.Ut(g)&&(await g.snapshot.release(),g=void 0),i=await r(n,AbortSignal.any([e,s.signal])),t.Ut(i)&&(n!==m||s.signal.aborted?(await i.release(),await a(n,`superseded`)):g={snapshot:i,revision:n})}finally{_=!1,f()}}},C=async()=>{for(;!s.signal.aborted;){await p(()=>t.Ut(g)&&g.revision===m);let n=g;if(t.Ut(n)){g=void 0,y=new AbortController;try{if(n.snapshot.contentHash===b){await a(n.revision,`unchanged`);continue}b=await i(n.snapshot,{revision:n.revision,signal:AbortSignal.any([e,s.signal]),revisionSignal:AbortSignal.any([e,s.signal,y.signal]),invalidate:x,withBuildsPaused:async e=>{v=!0;try{return await p(()=>!_),await e()}finally{v=!1,f()}}})?n.snapshot.contentHash:void 0}finally{await n.snapshot.release()}}}};e.addEventListener(`abort`,u,{once:!0});let w;try{e.throwIfAborted(),w=await n(x,l);let r=[S().catch(n=>{!e.aborted&&!t.Ut(c)&&(c=n),l(n)}),C().catch(e=>{c=e,l(e)})];if(await Promise.all(r),t.Ut(c))throw c;s.signal.throwIfAborted()}finally{l(e.reason),e.removeEventListener(`abort`,u);try{await w?.()}finally{await g?.snapshot.release()}}},I=(e,t)=>new Promise((n,r)=>{let i=()=>{e.off(`ready`,a),e.off(`error`,o),t.removeEventListener(`abort`,s)},a=()=>{i(),n()},o=e=>{i(),r(e)},s=()=>{i(),r(t.reason)};e.once(`ready`,a),e.once(`error`,o),t.addEventListener(`abort`,s,{once:!0}),t.aborted&&s()}),L=async({appPath:e,signal:t,onChange:n,onError:i})=>{e=await(0,C.realpath)(e);let o=(0,D.watch)(e,{ignoreInitial:!0,followSymlinks:!1,ignored:t=>(0,w.relative)(e,t).split(w.sep)[0]===`dist`||a.n((0,w.relative)(e,t)),atomic:!0}).on(`all`,n).on(`error`,i),c,l=[],u=async()=>{await Promise.all([o.close(),c?.close()])};try{await I(o,t)}catch(e){throw await u(),e}return{close:u,update:async(o,u)=>{u&&(l=o);let d=[...l,...o].filter(t=>t.path!==e&&!r.t({filePath:t.path,directory:e})),f=new Set(d.filter(e=>e.kind===`directory`).map(e=>e.path)),p=new Set(d.filter(e=>e.kind===`file`).map(e=>e.path)),m=new Set,h=new Set;for(let e of d){let t=(0,w.dirname)(e.path);for(;!s.a(t)&&(0,w.dirname)(t)!==t;)h.add(t),t=(0,w.dirname)(t);m.add(t)}let g=e=>[...f].some(t=>{let n=(0,w.relative)(t,e);return n.length>0&&n!==`..`&&!n.includes(w.sep)}),_=[...new Set([...d.map(e=>e.path),...m])].filter(s.a),v=c;if(_.length>0){let e=(0,D.watch)(_,{ignoreInitial:!0,followSymlinks:!1,depth:0,atomic:!0,ignored:e=>{let t=(0,w.resolve)(e);return a.n(e)||!(m.has(t)||f.has(t)||h.has(t)||p.has(t)||g(t))}}).on(`all`,(e,t)=>{let r=(0,w.resolve)(t);(p.has(r)||e!==`change`&&(g(r)||f.has(r)||h.has(r)))&&n()}).on(`error`,i);c=e;try{await I(e,t)}catch(e){throw await v?.close(),e}}else c=void 0;await v?.close(),o.some(e=>a.t(e)!==e.stamp)&&n()}}},R=async e=>{let n=await p.t({explicitPath:u.r(e.options,`path`),workingDirectory:process.cwd()}),{output:r,emit:i}=P(e),a=j({appPath:n.path}),s,c=!1;throw await F({signal:e.signal,subscribe:async(t,r)=>{s=await L({appPath:n.path,signal:e.signal,onChange:t,onError:r});try{await i({kind:`watch-ready`,message:`Watching ${n.path}. Syncing to ${e.target.apiUrl}. Press Ctrl+C to stop.`,appPath:n.path},e.signal)}catch(e){throw await s.close(),e}return s.close},build:async(t,a)=>{await i({kind:`build-start`,message:`Building app…`,revision:t},a);try{let e=await k({appPath:n.path,signal:a,updateWatchInputs:s.update,warn:e=>{c||(c=!0,r.warn(e))}});try{return await i({kind:`build-success`,message:`Built ${e.build.application.displayName}.`,revision:t,buildId:e.build.buildId,contentHash:e.contentHash,diagnostics:e.diagnostics},a),e}catch(t){throw await e.release(),t}}catch(n){a.throwIfAborted();let s=h.t(n);if(s.code===`WORKER_FAILED`)throw new o.t({code:s.code,message:s.message,details:s.details,hint:`Fix the worker failure, then restart twenty app dev. A worker killed while building may leave folders in .twenty/cli/snapshots; remove abandoned snapshots only after stopping all dev/apply sessions for this app.`});if(![`TYPECHECK_FAILED`,`BUILD_FAILED`,`SDK_NOT_INSTALLED`,`SDK_SOURCE_UNSUPPORTED`,`TYPESCRIPT_NOT_INSTALLED`].includes(s.code))throw n;let c=s.details?.diagnostics;if(e.outputMode===`human`&&Array.isArray(c))for(let e of c.filter(f.r))r.progress({message:f.s(e)});await i({kind:`build-failure`,message:`${s.message} Waiting for source changes.`,revision:t,error:{code:s.code,message:s.message,details:s.details}},a);return}},apply:async(o,s)=>{let{revision:c,signal:l}=s,d={...e,output:r,signal:l},f=!1;await i({kind:`sync-start`,message:`Planning changes…`,revision:c,buildId:o.build.buildId},l);let p;try{p=await g.i({build:o.build,appPath:n.path,context:d,inferDeletionFromMissingEntities:e.options.delete!==!1,isCreationApproved:u.t(e.options,`create`),isDeletionApproved:u.t(e.options,`yes`),approvalSignal:s.revisionSignal,flushProgress:()=>i({kind:`sync-progress`,message:``,revision:c},l),beforeWrite:()=>{f||s.revisionSignal.throwIfAborted(),f=!0}})}catch(e){if(l.aborted)throw e;let t=h.t(e);if(s.revisionSignal.aborted&&t.details?.phase===`confirmation`)return await i({kind:`sync-superseded`,message:`Source changed; a fresh plan is queued.`,revision:c,details:t.details},l),!1;if([`AUTH_REQUIRED`,`PERMISSION_DENIED`].includes(t.code))throw e;return await i({kind:`sync-failure`,message:`${t.message} A new source edit will request a fresh plan.`,revision:c,error:{code:t.code,message:t.message,hint:t.hint,details:t.details}},l),!1}try{await g.t({appPath:n.path,universalIdentifier:p.acknowledgedUniversalIdentifier,sourceFingerprints:o.sourceFingerprints,context:d})===`recorded`&&p.completedPhases.push(`pullBase`)}catch(t){throw g.r({error:t,phase:`pullBase`,applicationName:o.build.application.displayName,apiUrl:e.target.apiUrl,completedPhases:p.completedPhases,signal:l})}let m=await a({snapshot:o,applied:p,context:d,withBuildsPaused:s.withBuildsPaused,invalidate:s.invalidate});return t.Ut(p.appliedActions)||r.warn({code:`SYNC_REPORT_UNAVAILABLE`,message:`The sync succeeded, but the server did not return a readable list of changes.`}),await i({kind:`sync-success`,message:`Synced ${o.build.application.displayName}. Watching for changes…`,revision:c,buildId:o.build.buildId,contentHash:o.contentHash,completedPhases:p.completedPhases,clientGeneration:m,actions:p.appliedActions??null},l),!0},onSkipped:(t,n)=>i({kind:`build-skipped`,message:n===`unchanged`?`Build unchanged since the last acknowledged sync.`:`Source changed during the build; rebuilding…`,revision:t,reason:n},e.signal)}),new o.t({code:`INTERNAL_ERROR`,message:`The dev session stopped unexpectedly.`})};exports.runAppDevCommand=R;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./application-DOWikeQt.cjs"),r=require("./cli-error-CSsayo0u.cjs"),i=require("./resolve-source-sdk-
|
|
1
|
+
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./application-DOWikeQt.cjs"),r=require("./cli-error-CSsayo0u.cjs"),i=require("./resolve-source-sdk-BNnltA8w.cjs"),a=require("./is-same-universal-identifier-BCBib3RP.cjs"),o=require("./is-exported-manifest-DnQNK9XY.cjs"),s=require("./read-command-values-uSJqBG_E.cjs"),c=require("./read-input-value-Cxgh_r2g.cjs"),l=require("./parse-json-input-CO-KP4XZ.cjs"),u=require("./request-timeout-milliseconds.constant-DtyQHrll.cjs"),d=require("./style-BR52fK4V.cjs"),f=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),p=require("./resolve-app-project-B0KRR-xp.cjs"),m=require("./to-cli-error-BBYf_wqo.cjs"),h=require("./is-application-not-found-error-Cja7iQrL.cjs"),g=require("./create-metadata-client-9IF8ArjT.cjs"),_=require("./format-data-value-kug8Yjt2.cjs"),v=require("./create-tooling-failure-B2FmNwR2.cjs"),y=require("./create-app-not-installed-error-DY-iuPPx.cjs"),b=require("./format-details-COEwKz_M.cjs");var x=e.t(),S=e=>t.u(e)&&(0,x.isString)(e.id)&&(0,x.isString)(e.name)&&((0,x.isString)(e.universalIdentifier)||e.universalIdentifier===null)&&((0,x.isString)(e.applicationId)||e.applicationId===null)&&(0,x.isNumber)(e.timeoutSeconds)&&Number.isFinite(e.timeoutSeconds)&&e.timeoutSeconds>=0&&Math.ceil(e.timeoutSeconds*1e3)+6e4<2**31,C=()=>new r.t({code:`INVALID_RESPONSE`,message:`The server returned an invalid logic-function response.`}),w=e=>{if([`AUTH_REQUIRED`,`PERMISSION_DENIED`].includes(e.code))return!0;let n=e.details?.errors;return e.code===`GRAPHQL_ERROR`&&(0,x.isArray)(n)&&n.length>0&&n.every(e=>t.u(e)&&(0,x.isString)(e.code)&&[`NOT_FOUND`,`BAD_USER_INPUT`,`GRAPHQL_VALIDATION_FAILED`].includes(e.code))},T=async({manifest:e,selector:n,payload:i,target:o,signal:s,onExecuting:c})=>{let l=g.t({target:o,signal:s}),{applicationUniversalIdentifier:d}=e,{findOneApplication:f,findManyLogicFunctions:p}=await l.query({findOneApplication:{__args:{universalIdentifier:d},id:!0,universalIdentifier:!0},findManyLogicFunctions:{id:!0,name:!0,universalIdentifier:!0,applicationId:!0,timeoutSeconds:!0}}).catch(e=>{throw h.t({error:e,field:`findOneApplication`})?y.t({universalIdentifier:d,apiUrl:o.apiUrl}):e});if(!t.u(f)||!(0,x.isString)(f.id)||!a.t({value:f.universalIdentifier,universalIdentifier:d})||!(0,x.isArray)(p)||!p.every(S))throw C();let _=p.filter(n=>n.applicationId===f.id&&t.Ut(n.universalIdentifier)&&e.universalIdentifiers.includes(n.universalIdentifier.toLowerCase())),v=n.kind===`hook`?e.hooks[n.value]:n.value,b=_.filter(e=>t.Ut(v)&&(n.kind===`name`?e.name===v:e.universalIdentifier?.toLowerCase()===v));if(b.length===0)throw new r.t({code:`NOT_FOUND`,exitCode:r.n.NOT_FOUND,message:`Function "${n.value}" was not found in the deployed app.`,hint:`Check the selected workspace and function. Run twenty app apply or twenty app dev to sync local changes first.`,details:{identifier:n.value,availableFunctions:_.map(({name:e,universalIdentifier:t})=>({name:e,universalIdentifier:t}))}});if(b.length>1)throw new r.t({code:`AMBIGUOUS_RESOURCE`,exitCode:r.n.CONFLICT,message:`More than one app function matches "${n.value}".`,hint:`Select a function with --universal-identifier.`});let T=b[0],E={applicationUniversalIdentifier:d,functionName:T.name,functionUniversalIdentifier:T.universalIdentifier};c(T.name),s.throwIfAborted();let D=g.t({target:o,signal:s,timeoutMilliseconds:Math.ceil(T.timeoutSeconds*1e3)+u.t});try{let{executeOneLogicFunction:e}=await D.mutation({executeOneLogicFunction:{__args:{input:{id:T.id,payload:i}},data:!0,logs:!0,duration:!0,status:!0,error:!0}});if(!t.u(e)||!(0,x.isString)(e.status)||!(0,x.isString)(e.logs)||!(0,x.isNumber)(e.duration)||!Number.isFinite(e.duration)||e.duration<0)throw C();return{...E,status:e.status,durationMilliseconds:e.duration,data:e.data??null,logs:e.logs,error:e.error??null}}catch(e){let t=m.t(e,s),n=w(t);throw new r.t({code:t.code,exitCode:t.exitCode,message:t.message,hint:n?t.hint:`Execution may have started and may still be running. Check its effects before retrying; this command does not retry or stop server-side execution.`,details:{...t.details,...E,outcome:n?`not-started`:`unknown`}})}},E=e=>JSON.stringify(e,null,2).replace(/[\x7f-\x9f]/g,e=>`\\u${e.charCodeAt(0).toString(16).padStart(4,`0`)}`),D=(e,t=process.stdout)=>[b.t([[`Function`,_.r(e.functionName)],[`Status`,d.n(e.status===`SUCCESS`?`green`:`red`,_.r(e.status),t)],[`Duration`,d.i(`${e.durationMilliseconds}ms`,t)]],t),...e.data===null?[]:[``,d.t(`Data:`,t),E(e.data)],...e.error===null?[]:[``,d.t(`Error:`,t),E(e.error)],...e.logs.length>0?[``,d.t(`Logs:`,t),...e.logs.split(`
|
|
2
2
|
`).map(_.r)]:[]].join(`
|
|
3
3
|
`),O=async({options:e,output:n,outputMode:r,signal:a})=>{let c=await p.t({explicitPath:s.r(e,`path`),workingDirectory:process.cwd()}),l=await i.t({appPath:c.path,warn:n.warn});n.progress({message:`Reading app definitions in ${c.path}…`});let u=await f.n({request:{type:`buildManifest`,appPath:c.path},signal:a});a.throwIfAborted();let d=f.o({value:u.result,parseData:e=>{if(!t.u(e)||!o.t(e.manifest))return;let{manifest:n}=e;if(!(0,x.isArray)(n.logicFunctions))return;let r=[];for(let e of n.logicFunctions){if(!t.u(e)||!(0,x.isString)(e.universalIdentifier))return;r.push(e.universalIdentifier.toLowerCase())}let i={};for(let e of[`postInstallLogicFunction`,`preInstallLogicFunction`,`uninstallLogicFunction`]){let r=n.application[e];if(t.Ut(r)){if(!t.u(r)||!(0,x.isString)(r.universalIdentifier))return;i[e]=r.universalIdentifier.toLowerCase()}}return{data:{applicationUniversalIdentifier:n.application.universalIdentifier.toLowerCase(),universalIdentifiers:r,hooks:i}}}}),m=[...d.diagnostics,...f.t(u.output)];if(r===`human`)for(let e of m)n.progress({message:f.s(e)});if(!d.success)throw v.t({error:d.error,diagnostics:m,sdkVersion:l.version});return{...d.data,diagnostics:m}},k=e=>{let i=[],a=s.r(e,`name`),o=s.r(e,`universalIdentifier`);if(t.Ut(a)&&i.push({kind:`name`,value:a}),t.Ut(o)&&i.push({kind:`universalIdentifier`,value:o.toLowerCase()}),s.t(e,`postInstall`)&&i.push({kind:`hook`,value:`postInstallLogicFunction`}),s.t(e,`preInstall`)&&i.push({kind:`hook`,value:`preInstallLogicFunction`}),s.t(e,`uninstallHook`)&&i.push({kind:`hook`,value:`uninstallLogicFunction`}),i.length!==1)throw new r.t({code:`INVALID_INPUT`,exitCode:r.n.USAGE,message:`Choose exactly one of --name, --universal-identifier, --post-install, --pre-install or --uninstall-hook.`});let c=i[0];if(c.value.trim().length===0||c.kind===`universalIdentifier`&&!n.a(c.value))throw new r.t({code:`INVALID_INPUT`,exitCode:r.n.USAGE,message:c.kind===`name`?`--name cannot be empty.`:`--universal-identifier must be a UUID of version 4 or later.`});return c},A=async e=>{let{options:t,target:n,signal:i,output:a,outputMode:o}=e,u=k(t);if(n.credentialKind!==`oauth`)throw new r.t({code:`AUTH_REQUIRED`,exitCode:r.n.AUTHENTICATION,message:`Running logic functions requires a signed-in user. API keys cannot execute them.`,hint:`Sign in with twenty auth login --url ${n.apiUrl} --name dev, then use --remote dev.`,details:{credentialKind:n.credentialKind}});let d=l.n({text:await c.t({value:s.r(t,`payload`)??`{}`,optionName:`--payload`,signal:i}),optionName:`--payload`}),f=await O(e);u.kind===`hook`&&a.progress({message:`Executing the hook only; this does not install or uninstall the app.`});let p=await T({manifest:f,selector:u,payload:d,target:n,signal:i,onExecuting:e=>a.progress({message:`Executing ${_.r(e)} on ${n.apiUrl}…`})}),m=D(p,p.status===`SUCCESS`?process.stdout:process.stderr);if(p.status!==`SUCCESS`)throw o===`human`&&a.progress({message:m}),new r.t({code:`EXECUTION_FAILED`,message:`Function ${_.r(p.functionName)} returned ${_.r(p.status)}.`,details:{...p,outcome:`completed`,diagnostics:f.diagnostics}});return{data:{...p,diagnostics:f.diagnostics},human:m}};exports.runAppExecCommand=A;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./constants-D-caeNc5-9rDzSg5B.cjs"),t=require("./get-client-sdk-package-path-2U3kDCRq.cjs"),n=require("./cli-error-CSsayo0u.cjs"),r=require("./resolve-source-sdk-
|
|
1
|
+
const e=require("./constants-D-caeNc5-9rDzSg5B.cjs"),t=require("./get-client-sdk-package-path-2U3kDCRq.cjs"),n=require("./cli-error-CSsayo0u.cjs"),r=require("./resolve-source-sdk-BNnltA8w.cjs"),i=require("./read-command-values-uSJqBG_E.cjs"),a=require("./style-BR52fK4V.cjs"),o=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),s=require("./read-app-identity-Da5yI23t.cjs"),c=require("./resolve-app-project-B0KRR-xp.cjs"),l=require("./is-application-not-found-error-Cja7iQrL.cjs"),u=require("./get-client-generation-skip-reason-BVkBgZWQ.cjs"),d=require("./create-app-not-installed-error-DY-iuPPx.cjs"),f=require("./format-display-path-gEepVJDg.cjs");var p=async p=>{let{options:m,output:h,outputMode:g,signal:_,target:v}=p,y=performance.now(),b=process.cwd(),x=await c.t({explicitPath:i.r(m,`path`),workingDirectory:b}),S=await u.t({appPath:x.path});if(e.Ut(S))throw new n.t({code:`CLIENT_SDK_NOT_INSTALLED`,message:`The typed API client cannot be generated: ${S}`,hint:`Install twenty-client-sdk in the app, for example with yarn add twenty-client-sdk, then try again.`,details:{appPath:x.path}});let C=await s.t({appPath:x.path,signal:_});if(!e.Ut(C.application))throw new n.t({code:`INVALID_INPUT`,exitCode:n.n.USAGE,message:`This project has no application definition.`});let w=C.application.universalIdentifier.toLowerCase();if(g===`human`)for(let e of C.diagnostics)h.progress({message:o.s(e)});let T=await r.t({appPath:x.path}),E=await u.r({appPath:x.path,applicationUniversalIdentifier:w,sdk:T,context:p}).catch(e=>{throw l.t({error:e,field:`applicationCoreGraphqlSchema`})?d.t({universalIdentifier:w,apiUrl:v.apiUrl,hint:`Install it with twenty app apply, which also generates the client.`}):e}),D=t.t({appPath:x.path}),O=f.t({workingDirectory:b,targetPath:D});return{data:{app:{path:x.path,name:x.name},sdk:{version:T.version},client:{path:D},application:C.application,diagnostics:[...C.diagnostics,...E],durationMilliseconds:Math.round(performance.now()-y)},human:[a.o(`Generated the typed API client for ${C.application.displayName??x.name} from ${v.apiUrl}`),` Saved in ${a.n(`cyan`,O)}`].join(`
|
|
2
2
|
`)}};exports.runAppGenerateClientCommand=p;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./build-CX6FBrbu.cjs"),t=require("./check-node-requirement-B_hf2E32.cjs"),n=require("./utils-CvvLHbc4-CKDJ1YgX.cjs"),r=require("./constants-D-caeNc5-9rDzSg5B.cjs"),i=require("./cli-error-CSsayo0u.cjs"),a=require("./print-typescript-value-D5kLR9wo.cjs"),o=require("./read-command-values-uSJqBG_E.cjs"),s=require("./convert-to-label-hx-g0Lvj.cjs"),c=require("./style-BR52fK4V.cjs"),l=require("./cli-version.constant-B92ETb2e.cjs"),u=require("./format-display-path-gEepVJDg.cjs"),d=require("./select-target-DZlm8j62.cjs"),f=require("./get-config-path-C-D-QHuX.cjs"),p=require("./read-config-Qwl4pAO8.cjs");let m=require("node:crypto"),h=require("node:fs/promises"),g=require("node:path"),_=require("node:fs");var v=e.t(),y=`2.51.3`,b=[`twenty-client-sdk`,`twenty-sdk`,`twenty-ui`],x=e.n(((e,n)=>{var r=t.g();n.exports=(e,t,n=!1)=>{if(e instanceof r)return e;try{return new r(e,t)}catch(e){if(!n)return null;throw e}}})),S=e.n(((e,t)=>{var n=x();t.exports=(e,t)=>{let r=n(e,t);return r?r.version:null}})),C=e.n(((e,t)=>{var n=x();t.exports=(e,t)=>{let r=n(e.trim().replace(/^[=v]+/,``),t);return r?r.version:null}})),ee=e.n(((e,n)=>{var r=t.g();n.exports=(e,t,n,i,a)=>{typeof n==`string`&&(a=i,i=n,n=void 0);try{return new r(e instanceof r?e.version:e,n).inc(t,i,a).version}catch{return null}}})),w=e.n(((e,t)=>{var n=x();t.exports=(e,t)=>{let r=n(e,null,!0),i=n(t,null,!0),a=r.compare(i);if(a===0)return null;let o=a>0,s=o?r:i,c=o?i:r,l=!!s.prerelease.length;if(c.prerelease.length&&!l)return!c.patch&&!c.minor?`major`:s.patch?`patch`:s.minor?`minor`:`major`;let u=l?`pre`:``;return r.major===i.major?r.minor===i.minor?r.patch===i.patch?`prerelease`:u+`patch`:u+`minor`:u+`major`}})),T=e.n(((e,n)=>{var r=t.g();n.exports=(e,t)=>new r(e,t).major})),te=e.n(((e,n)=>{var r=t.g();n.exports=(e,t)=>new r(e,t).minor})),ne=e.n(((e,n)=>{var r=t.g();n.exports=(e,t)=>new r(e,t).patch})),E=e.n(((e,t)=>{var n=x();t.exports=(e,t)=>{let r=n(e,t);return r&&r.prerelease.length?r.prerelease:null}})),D=e.n(((e,n)=>{var r=t.h();n.exports=(e,t,n)=>r(t,e,n)})),O=e.n(((e,n)=>{var r=t.h();n.exports=(e,t)=>r(e,t,!0)})),k=e.n(((e,n)=>{var r=t.g();n.exports=(e,t,n)=>{let i=new r(e,n),a=new r(t,n);return i.compare(a)||i.compareBuild(a)}})),A=e.n(((e,t)=>{var n=k();t.exports=(e,t)=>e.sort((e,r)=>n(e,r,t))})),j=e.n(((e,t)=>{var n=k();t.exports=(e,t)=>e.sort((e,r)=>n(r,e,t))})),M=e.n(((e,n)=>{var r=t.g(),i=x(),{safeRe:a,t:o}=t.v();n.exports=(e,t)=>{if(e instanceof r)return e;if(typeof e==`number`&&(e=String(e)),typeof e!=`string`)return null;t||={};let n=null;if(!t.rtl)n=e.match(t.includePrerelease?a[o.COERCEFULL]:a[o.COERCE]);else{let r=t.includePrerelease?a[o.COERCERTLFULL]:a[o.COERCERTL],i;for(;(i=r.exec(e))&&(!n||n.index+n[0].length!==e.length);)(!n||i.index+i[0].length!==n.index+n[0].length)&&(n=i),r.lastIndex=i.index+i[1].length+i[2].length;r.lastIndex=-1}if(n===null)return null;let s=n[2];return i(`${s}.${n[3]||`0`}.${n[4]||`0`}${t.includePrerelease&&n[5]?`-${n[5]}`:``}${t.includePrerelease&&n[6]?`+${n[6]}`:``}`,t)}})),N=e.n(((e,n)=>{var r=t.o();n.exports=(e,t)=>new r(e,t).set.map(e=>e.map(e=>e.value).join(` `).trim().split(` `))})),P=e.n(((e,n)=>{var r=t.g(),i=t.o();n.exports=(e,t,n)=>{let a=null,o=null,s=null;try{s=new i(t,n)}catch{return null}return e.forEach(e=>{s.test(e)&&(!a||o.compare(e)===-1)&&(a=e,o=new r(a,n))}),a}})),F=e.n(((e,n)=>{var r=t.g(),i=t.o();n.exports=(e,t,n)=>{let a=null,o=null,s=null;try{s=new i(t,n)}catch{return null}return e.forEach(e=>{s.test(e)&&(!a||o.compare(e)===1)&&(a=e,o=new r(a,n))}),a}})),I=e.n(((e,n)=>{var r=t.g(),i=t.o(),a=t.f();n.exports=(e,t)=>{e=new i(e,t);let n=new r(`0.0.0`);if(e.test(n)||(n=new r(`0.0.0-0`),e.test(n)))return n;n=null;for(let t=0;t<e.set.length;++t){let i=e.set[t],o=null;i.forEach(e=>{let t=new r(e.semver.version);switch(e.operator){case`>`:t.prerelease.length===0?t.patch++:t.prerelease.push(0),t.raw=t.format();case``:case`>=`:(!o||a(t,o))&&(o=t);break;case`<`:case`<=`:break;default:throw Error(`Unexpected operation: ${e.operator}`)}}),o&&(!n||a(n,o))&&(n=o)}return n&&e.test(n)?n:null}})),L=e.n(((e,n)=>{var r=t.i();n.exports=(e,t,n)=>r(e,t,`>`,n)})),R=e.n(((e,n)=>{var r=t.o();n.exports=(e,t,n)=>(e=new r(e,n),t=new r(t,n),e.intersects(t,n))})),z=e.n(((e,n)=>{var r=t.a(),i=t.h();n.exports=(e,t,n)=>{let a=[],o=null,s=null,c=e.sort((e,t)=>i(e,t,n));for(let e of c)r(e,t,n)?(s=e,o||=e):(s&&a.push([o,s]),s=null,o=null);o&&a.push([o,null]);let l=[];for(let[e,t]of a)e===t?l.push(e):!t&&e===c[0]?l.push(`*`):t?e===c[0]?l.push(`<=${t}`):l.push(`${e} - ${t}`):l.push(`>=${e}`);let u=l.join(` || `),d=typeof t.raw==`string`?t.raw:String(t);return u.length<d.length?u:t}})),B=e.n(((e,n)=>{var r=t.o(),i=t.s(),{ANY:a}=i,o=t.a(),s=t.h(),c=(e,t,n={})=>{if(e===t)return!0;e=new r(e,n),t=new r(t,n);let i=!1;OUTER:for(let r of e.set){for(let e of t.set){let t=d(r,e,n);if(i||=t!==null,t)continue OUTER}if(i)return!1}return!0},l=[new i(`>=0.0.0-0`)],u=[new i(`>=0.0.0`)],d=(e,t,n)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===a){if(t.length===1&&t[0].semver===a)return!0;e=n.includePrerelease?l:u}if(t.length===1&&t[0].semver===a){if(n.includePrerelease)return!0;t=u}let r=new Set,i,c;for(let t of e)t.operator===`>`||t.operator===`>=`?i=f(i,t,n):t.operator===`<`||t.operator===`<=`?c=p(c,t,n):r.add(t.semver);if(r.size>1)return null;let d;if(i&&c&&(d=s(i.semver,c.semver,n),d>0||d===0&&(i.operator!==`>=`||c.operator!==`<=`)))return null;for(let e of r){if(i&&!o(e,String(i),n)||c&&!o(e,String(c),n))return null;for(let r of t)if(!o(e,String(r),n))return!1;return!0}let m,h,g,_,v=c&&!n.includePrerelease&&c.semver.prerelease.length?c.semver:!1,y=i&&!n.includePrerelease&&i.semver.prerelease.length?i.semver:!1;v&&v.prerelease.length===1&&c.operator===`<`&&v.prerelease[0]===0&&(v=!1);for(let e of t){if(_=_||e.operator===`>`||e.operator===`>=`,g=g||e.operator===`<`||e.operator===`<=`,i){if(y&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===y.major&&e.semver.minor===y.minor&&e.semver.patch===y.patch&&(y=!1),e.operator===`>`||e.operator===`>=`){if(m=f(i,e,n),m===e&&m!==i)return!1}else if(i.operator===`>=`&&!o(i.semver,String(e),n))return!1}if(c){if(v&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===v.major&&e.semver.minor===v.minor&&e.semver.patch===v.patch&&(v=!1),e.operator===`<`||e.operator===`<=`){if(h=p(c,e,n),h===e&&h!==c)return!1}else if(c.operator===`<=`&&!o(c.semver,String(e),n))return!1}if(!e.operator&&(c||i)&&d!==0)return!1}return!(i&&g&&!c&&d!==0||c&&_&&!i&&d!==0||y||v)},f=(e,t,n)=>{if(!e)return t;let r=s(e.semver,t.semver,n);return r>0?e:r<0||t.operator===`>`&&e.operator===`>=`?t:e},p=(e,t,n)=>{if(!e)return t;let r=s(e.semver,t.semver,n);return r<0?e:r>0||t.operator===`<`&&e.operator===`<=`?t:e};n.exports=c})),V=e.n(((e,n)=>{var r=t.v(),i=t.y(),a=t.g(),o=t._();n.exports={parse:x(),valid:S(),clean:C(),inc:ee(),diff:w(),major:T(),minor:te(),patch:ne(),prerelease:E(),compare:t.h(),rcompare:D(),compareLoose:O(),compareBuild:k(),sort:A(),rsort:j(),gt:t.f(),lt:t.u(),eq:t.m(),neq:t.p(),gte:t.d(),lte:t.l(),cmp:t.c(),coerce:M(),Comparator:t.s(),Range:t.o(),satisfies:t.a(),toComparators:N(),maxSatisfying:P(),minSatisfying:F(),minVersion:I(),validRange:t.n(),outside:t.i(),gtr:L(),ltr:t.r(),intersects:R(),simplifyRange:z(),subset:B(),SemVer:a,re:r.re,src:r.src,tokens:r.t,SEMVER_SPEC_VERSION:i.SEMVER_SPEC_VERSION,RELEASE_TYPES:i.RELEASE_TYPES,compareIdentifiers:o.compareIdentifiers,rcompareIdentifiers:o.rcompareIdentifiers}})),H=e.i(V()),U=()=>(0,g.join)((0,g.dirname)((0,_.realpathSync)(process.argv[1]??``)),`app-template`),W=async({appDirectory:e,appName:t,appDisplayName:n,appDescription:r})=>{await(0,h.cp)(U(),e,{recursive:!0}),await(0,h.writeFile)((0,g.join)(e,`yarn.lock`),``,{flag:`a`});for(let[t,n]of[[`gitignore`,`.gitignore`],[`github`,`.github`],[`yarnrc.yml`,`.yarnrc.yml`]])await(0,h.rename)((0,g.join)(e,t),(0,g.join)(e,n));await(0,h.cp)((0,g.join)(e,`AGENTS.md`),(0,g.join)(e,`CLAUDE.md`));let i=(0,g.join)(e,`.github`,`workflows`,`ci.yml`);await(0,h.writeFile)(i,(await(0,h.readFile)(i,`utf8`)).replace(`CLI-VERSION-TO-BE-GENERATED`,l.t));let o=(0,g.join)(e,`src/constants/universal-identifiers.ts`);await(0,h.writeFile)(o,(await(0,h.readFile)(o,`utf8`)).replace(/'DISPLAY-NAME-TO-BE-GENERATED'/g,()=>a.t({value:n})).replace(/'DESCRIPTION-TO-BE-GENERATED'/g,()=>a.t({value:r})).replace(/UUID-TO-BE-GENERATED/g,()=>(0,m.randomUUID)()));let s=(0,g.join)(e,`package.json`),c=JSON.parse(await(0,h.readFile)(s,`utf8`));c.name=t,c.engines.twenty=`>=${H.default.major(y)}.${H.default.minor(y)}.0`;for(let e of b)c.devDependencies[e]=y;await(0,h.writeFile)(s,JSON.stringify(c,null,2))},G=`TO-BE-GENERATED`,K=`yarn.lock`,q=({appDirectory:e,reason:t})=>new i.t({code:`APP_PATH_UNAVAILABLE`,exitCode:i.n.CONFLICT,message:`${e} already exists and ${t}.`,hint:`Choose another app name, or pass --path with a new or empty directory.`,details:{path:e}}),J=async e=>{let t=await(0,h.stat)(e).catch(e=>{if(!i.r(e,`ENOENT`))throw e});if(!r.Ut(t))return`missing`;if(!t.isDirectory())throw q({appDirectory:e,reason:`is not a directory`});if(n.n(await(0,h.readdir)(e)))throw q({appDirectory:e,reason:`is not empty`});return`empty`},Y=async e=>{let t=await(0,h.readdir)(e,{recursive:!0,withFileTypes:!0}),n=[];for(let r of t){let t=(0,g.join)(r.parentPath,r.name),i=(0,g.relative)(e,t);r.isFile()&&i!==K&&(await(0,h.readFile)(t,`utf8`)).includes(G)&&n.push(i)}return n},X=async({stagingDirectory:e,appDirectory:t})=>{let n=[];try{for(let r of await(0,h.readdir)(e,{recursive:!0,withFileTypes:!0})){let i=(0,g.join)(r.parentPath,r.name),a=(0,g.join)(t,(0,g.relative)(e,i));r.isDirectory()?await(0,h.mkdir)(a):await(0,h.copyFile)(i,a,_.constants.COPYFILE_EXCL),n.push({createdPath:a,isDirectory:r.isDirectory()})}}catch(e){for(let{createdPath:e,isDirectory:t}of n.reverse())await(t?(0,h.rmdir)(e):(0,h.unlink)(e)).catch(()=>void 0);throw e}await(0,h.rm)(e,{recursive:!0,force:!0})},Z=async({appDirectory:e,appName:t,appDisplayName:r,appDescription:a,signal:o})=>{await J(e);let s=(0,g.dirname)(e);await(0,h.mkdir)(s,{recursive:!0});let c=await(0,h.mkdtemp)((0,g.join)(s,`.${(0,g.basename)(e)}-`));try{await W({appName:t,appDisplayName:r,appDescription:a,appDirectory:c}),o.throwIfAborted();let s=await Y(c);if(n.n(s))throw new i.t({code:`APP_INIT_FAILED`,message:`The app template still has placeholders in ${s.join(`, `)}.`,hint:`This CLI ships an app template it cannot render. Upgrade the twenty CLI.`,details:{unrenderedFiles:s}});o.throwIfAborted(),await J(e)===`empty`?await X({stagingDirectory:c,appDirectory:e}):await(0,h.rename)(c,e)}catch(t){throw await(0,h.rm)(c,{recursive:!0,force:!0}),t instanceof i.t||o.aborted?t:new i.t({code:`APP_INIT_FAILED`,message:`Could not create ${e}: ${t instanceof Error?t.message:String(t)}`,hint:`Files this command had written there were removed. Fix the cause, then run the command again.`,details:{path:e}})}},re=({appName:e,location:t,packageNames:n,packageVersion:r,nextSteps:i})=>{let a=Math.max(...i.map(({command:e})=>e.length));return[c.o(`Created ${e} in ${t}`),c.i(` ${d.n(n)} pinned to ${r}. Nothing was installed.`),``,c.t(`Next steps`),...i.map(({command:e,description:t})=>` ${c.r(e.padEnd(a))} ${c.i(`# ${t}`)}`)].join(`
|
|
2
|
+
`)},ie=/^[\w./-]+$/,Q=e=>ie.test(e)?e:process.platform===`win32`?`'${e.replace(/'/g,`''`)}'`:`'${e.replace(/'/g,`'\\''`)}'`,ae=({displayPath:e,isTargetConfigured:t,remoteName:n})=>{let i=r.Ut(n)?` --remote ${Q(n)}`:``;return[...e===`.`?[]:[{command:`cd ${Q(e.startsWith(`-`)?`./${e}`:e)}`,description:`Enter the new app`}],{command:`yarn install`,description:`Install the pinned dependencies`},...t?[]:[{command:`twenty auth login --url <url>${r.Ut(n)?` --name ${Q(n)}`:``}`,description:`Connect a workspace`}],{command:`twenty app apply --create${i}`,description:`Build the app and install it in your workspace`}].map(e=>({...e,description:process.platform===`win32`?`${e.description} (PowerShell)`:e.description}))},oe=/^(?:@[a-z0-9~-][a-z0-9._~-]*\/)?[a-z0-9~-][a-z0-9._~-]*$/,$=214,se=e=>e.length<=$&&![`node_modules`,`favicon.ico`].includes(e)&&oe.test(e),ce=({environment:e,remoteFlag:t})=>d.t({environment:e,remoteFlag:t,loadConfig:()=>p.t(f.t()),warn:()=>void 0}).then(()=>!0,()=>!1),le=async({arguments:e,options:t,output:n,signal:r})=>{let a=o.n(e,0)?.trim()??``;if(!se(a))throw new i.t({code:`INVALID_APP_NAME`,exitCode:i.n.USAGE,message:`"${a}" is not a valid package name.`,hint:`Use lowercase letters, digits, hyphens, dots or underscores, for example my-app.`});let c=process.cwd(),l=(0,g.resolve)(c,o.r(t,`path`)??(0,g.basename)(a)),d=o.r(t,`displayName`)?.trim(),f=(0,v.isNonEmptyString)(d)?d:s.t(a),p=o.r(t,`description`)?.trim()??``,m=u.t({workingDirectory:c,targetPath:l}),h=m===`.`?`the current directory`:m;n.progress({message:`Creating ${a} in ${h}…`}),await Z({appDirectory:l,appName:a,appDisplayName:f,appDescription:p,signal:r});let _=o.r(t,`remote`),x=ae({displayPath:m,isTargetConfigured:await ce({environment:process.env,remoteFlag:_}),remoteName:_}),S=[...b];return{data:{app:{name:a,displayName:f,description:p,path:l},packages:S.map(e=>({name:e,version:y})),nextSteps:x},human:re({appName:a,location:h,packageNames:S,packageVersion:y,nextSteps:x})}};exports.runAppInitCommand=le;
|
package/dist/chunks/{run-app-install-command-DPt8PzUS.cjs → run-app-install-command-AG25zpGx.cjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./cli-error-CSsayo0u.cjs"),r=require("./style-BR52fK4V.cjs"),i=require("./with-phase-details-Dof8Ao9R.cjs"),a=require("./to-cli-error-BBYf_wqo.cjs"),o=require("./create-metadata-client-9IF8ArjT.cjs"),s=require("./format-data-value-kug8Yjt2.cjs"),c=require("./read-application-identifier-
|
|
1
|
+
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./cli-error-CSsayo0u.cjs"),r=require("./style-BR52fK4V.cjs"),i=require("./with-phase-details-Dof8Ao9R.cjs"),a=require("./to-cli-error-BBYf_wqo.cjs"),o=require("./create-metadata-client-9IF8ArjT.cjs"),s=require("./format-data-value-kug8Yjt2.cjs"),c=require("./read-application-identifier-C3qn6MSa.cjs");let l=require("node:timers/promises");var u=new Set([`AUTH_REQUIRED`,`PERMISSION_DENIED`,`NOT_FOUND`]),d=({phase:e,code:t})=>e===`identity`||e===`start`&&u.has(t)?`not-started`:t===`INSTALL_FAILED`?`failed`:`unknown`,f=({outcome:e,phase:t})=>t===`identity`?`Fix the app source or identifier, then retry. No installation was started.`:e===`not-started`?`Check the target workspace, registration and APPLICATIONS permission before retrying.`:`Run twenty app install again to retry or resume waiting for the current installation. Stopping the CLI does not cancel the server job.`,p=({error:e,phase:r,completedPhases:o,universalIdentifier:s,jobId:c,signal:l})=>{let u=a.t(e,l),p=d({phase:r,code:u.code});return i.t({error:new n.t({cause:u,code:u.code,exitCode:u.exitCode,message:u.message,hint:u.hint,details:{...u.details,...t.Ut(s)?{universalIdentifier:s}:{},...t.Ut(c)?{jobId:c}:{}}}),phase:r,outcome:p,completedPhases:o,hint:f({outcome:p,phase:r})})},m=e.t(),h={POLL_INTERVAL_MILLISECONDS:1e3,TIMEOUT_MILLISECONDS:6e5},g=e=>(0,m.isNumber)(e)&&Number.isInteger(e)&&e>=0&&e<=100,_=async({universalIdentifier:e,jobId:r,target:i,signal:a,onProgress:s})=>{let c=o.t({target:i,signal:a}),u=0;for(;;){a.throwIfAborted();let i=(await c.query({__name:`FindInstallApplicationJobStatus`,findInstallApplicationJobStatus:{__args:{universalIdentifier:e,jobId:r},jobId:!0,state:!0,failedReason:!0,progress:!0}}))?.findInstallApplicationJobStatus;if(!t.u(i)||i.jobId!==r||!Object.values(o.n.enumJobState).includes(i.state)||t.Ut(i.progress)&&!g(i.progress))throw new n.t({code:`INVALID_RESPONSE`,message:`The server did not return the status of the requested installation job.`});if(i.state===`FAILED`)throw new n.t({code:`INSTALL_FAILED`,message:(0,m.isNonEmptyString)(i.failedReason)?i.failedReason:`The app installation job failed.`});let d=i.state===`COMPLETED`?100:i.progress??u;if(d!==u&&(u=d,s(d)),i.state===`COMPLETED`)break;await(0,l.setTimeout)(h.POLL_INTERVAL_MILLISECONDS,void 0,{signal:a})}},v=async({universalIdentifier:e,completedPhases:r,target:i,signal:a,onProgress:s})=>{let l=AbortSignal.timeout(h.TIMEOUT_MILLISECONDS),u=AbortSignal.any([a,l]),d=o.t({target:i,signal:u}),f=(t,i,o)=>p({error:l.aborted&&!a.aborted?new n.t({code:`TIMEOUT`,message:`Timed out waiting for the app installation after ${h.TIMEOUT_MILLISECONDS/1e3}s.`}):t,phase:i,completedPhases:r,universalIdentifier:e,jobId:o,signal:a}),g=await d.mutation({__name:`TriggerInstallApplication`,triggerInstallApplication:{__args:{input:{universalIdentifier:e}},jobId:!0}}).then(e=>{let r=e?.triggerInstallApplication;if(!t.u(r)||!(0,m.isNonEmptyString)(r.jobId))throw new n.t({code:`INVALID_RESPONSE`,message:`The server did not return an installation job identifier.`});return r.jobId}).catch(e=>{throw f(e,`start`)});return r.push(`start`),await _({universalIdentifier:e,jobId:g,target:i,signal:u,onProgress:s}).catch(e=>{throw f(e,`wait`,g)}),r.push(`wait`),{application:{universalIdentifier:e,name:(await c.n({universalIdentifier:e,target:i,signal:u}).catch(e=>{throw f(e,`check`,g)})).name},installed:!0,jobId:g}},y=async e=>{let{target:t,signal:n,output:i}=e,a=[],o=await c.t({context:e,onIdentityRead:()=>a.push(`identity`)}).catch(e=>{throw p({error:e,phase:`identity`,completedPhases:a,signal:n})}),l=`Installing the registered app on ${t.apiUrl}…`;i.progress({message:l,percentage:0});let u=await v({universalIdentifier:o,completedPhases:a,target:t,signal:n,onProgress:e=>i.progress({message:l,percentage:e})});return{data:u,human:r.o(`Installed ${s.r(u.application.name)} on ${t.apiUrl}`)}};exports.runAppInstallCommand=y;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./application-DOWikeQt.cjs"),r=require("./cli-error-CSsayo0u.cjs"),i=require("./read-command-values-uSJqBG_E.cjs"),a=require("./resolve-request-url-BvOe0vYd.cjs"),o=require("./request-timeout-milliseconds.constant-DtyQHrll.cjs"),s=require("./parse-graphql-response-BcKxw_s9.cjs"),c=require("./create-http-status-error-E0DUDIUP.cjs"),l=require("./style-BR52fK4V.cjs"),u=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),d=require("./read-app-identity-
|
|
1
|
+
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./application-DOWikeQt.cjs"),r=require("./cli-error-CSsayo0u.cjs"),i=require("./read-command-values-uSJqBG_E.cjs"),a=require("./resolve-request-url-BvOe0vYd.cjs"),o=require("./request-timeout-milliseconds.constant-DtyQHrll.cjs"),s=require("./parse-graphql-response-BcKxw_s9.cjs"),c=require("./create-http-status-error-E0DUDIUP.cjs"),l=require("./style-BR52fK4V.cjs"),u=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),d=require("./read-app-identity-Da5yI23t.cjs"),f=require("./resolve-app-project-B0KRR-xp.cjs"),p=require("./to-cli-error-BBYf_wqo.cjs"),m=require("./format-data-value-kug8Yjt2.cjs"),h=require("./to-public-target-bNT50le0.cjs");let g=require("node:events");var _=e=>{let a=i.r(e,`name`),o=i.r(e,`universalIdentifier`);if(t.Ut(a)&&t.Ut(o)||t.Ut(a)&&a.trim().length===0||t.Ut(o)&&!n.a(o))throw new r.t({code:`INVALID_INPUT`,exitCode:r.n.USAGE,message:`Use either a nonempty --name or a UUID of version 4 or later for --universal-identifier, or neither to watch every function in the app.`});return{...t.Ut(a)?{name:a}:{},...t.Ut(o)?{universalIdentifier:o.toLowerCase()}:{}}},v=e.t();async function*y({body:e,signal:t,frameByteLimit:n=a.l}){let i=e.getReader(),o=new TextDecoder,s=``,c=``,l=[],u=0,d=!1,f=e=>{if(u+=e,u>n)throw new r.t({code:`RESPONSE_LIMIT_EXCEEDED`,message:`A log stream frame exceeds ${n} bytes.`,details:{byteLimit:n}})},p=()=>{i.cancel().catch(()=>void 0)};t.addEventListener(`abort`,p,{once:!0});try{t.throwIfAborted();for(let e=await i.read();!e.done;e=await i.read()){t.throwIfAborted();let n=0;for(let r=0;r<e.value.length;r+=1){let i=e.value[r];if(d&&(d=!1,i===10)){f(1),n=r+1;continue}if(!(i!==10&&i!==13)){if(f(r-n+1),s+=o.decode(e.value.subarray(n,r),{stream:!0}),s+=o.decode(),n=r+1,d=i===13,s.length===0){let e={event:c,data:l.join(`
|
|
2
2
|
`)};c=``,l=[],u=0,(e.event.length>0||e.data.length>0)&&(yield e,t.throwIfAborted())}else{let e=s.indexOf(`:`),t=e===-1?s:s.slice(0,e),n=e===-1?``:s.slice(e+1).replace(/^ /,``);t===`event`?c=n:t===`data`&&l.push(n)}s=``}}f(e.value.length-n),s+=o.decode(e.value.subarray(n),{stream:!0})}t.throwIfAborted()}finally{t.removeEventListener(`abort`,p),await i.cancel().catch(()=>void 0),i.releaseLock()}}var b=async({response:e,target:n,signal:r})=>{if(t.Ut(e.body))for await(let i of y({body:e.body,signal:r})){if(i.event!==`next`)break;let r;try{r=JSON.parse(i.data)}catch{break}if(t.u(r)&&(0,v.isNonEmptyArray)(r.errors))return s.n({errors:r.errors,data:r.data,status:e.status,headers:e.headers,target:n});break}return c.t({status:e.status,headers:e.headers,body:void 0,target:n})},x=e=>new r.t({code:`INVALID_RESPONSE`,message:e}),S=async({target:e,signal:n,query:i,variables:c,onConnected:l,onData:u})=>{let d=a.t({apiUrl:e.apiUrl,path:s.r.metadata}),f=new AbortController,p=AbortSignal.any([n,f.signal]),m=setTimeout(()=>f.abort(new DOMException(`Connection timed out`,`TimeoutError`)),o.t);try{let n=await a.c(d,{method:`POST`,headers:{Authorization:`Bearer ${e.bearerToken}`,"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify({query:i,variables:c}),redirect:`manual`,signal:p},o.t);if(n.status>=300&&n.status<400)throw await n.body?.cancel(),a.i(n,d);if(n.headers.get(`content-type`)?.split(`;`)[0].trim().toLowerCase()!==`text/event-stream`){let t=await a.s(n,a.l);throw await s.t({response:new Response([204,205].includes(n.status)?null:t,{status:n.status,headers:n.headers}),target:e}),x(`The server did not return a GraphQL event stream.`)}if(!n.ok)throw await b({response:n,target:e,signal:p});if(!t.Ut(n.body))throw x(`The server returned an empty log stream.`);clearTimeout(m),await l();for await(let r of y({body:n.body,signal:p})){if(r.event===`complete`)return;if(r.event!==`next`)throw x(`The server returned an unsupported GraphQL stream event.`);let i;try{i=JSON.parse(r.data)}catch{throw x(`The log stream contains invalid JSON.`)}if(!t.u(i))throw x(`The log stream contains an invalid GraphQL result.`);if((0,v.isArray)(i.errors)&&i.errors.length>0)throw s.n({errors:i.errors,data:i.data,status:n.status,headers:n.headers,target:e});if(!(`data`in i))throw x(`The log stream contains no GraphQL data.`);await u(i.data)}throw new r.t({code:`NETWORK_ERROR`,message:`The log stream ended without a completion event.`,hint:`Restart twenty app logs to resume watching. Logs produced while disconnected cannot be replayed.`})}catch(e){throw a.o({error:e,signal:n,url:d,timeoutMilliseconds:o.t})}finally{clearTimeout(m),f.abort()}},C=e=>{if(!(e instanceof r.t)||e.code!==`GRAPHQL_ERROR`)return!1;let n=e.details?.errors;return(0,v.isArray)(n)&&n.length>0&&n.every(e=>t.u(e)&&(!t.Ut(e.code)||e.code===`GRAPHQL_VALIDATION_FAILED`)&&(0,v.isString)(e.message)&&/Cannot query field "(?:name|universalIdentifier)" on type "LogicFunctionLogs"/.test(e.message))},w=async({applicationUniversalIdentifier:e,filter:n,target:i,signal:a,onConnected:o,onIdentityUnavailable:s,onRecord:c})=>{let l=0,u=s=>S({target:i,signal:a,query:`subscription SubscribeToLogs($input: LogicFunctionLogsInput!) {
|
|
3
3
|
logicFunctionLogs(input: $input) {
|
|
4
4
|
logs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./constants-D-caeNc5-9rDzSg5B.cjs"),t=require("./resolve-source-sdk-
|
|
1
|
+
const e=require("./constants-D-caeNc5-9rDzSg5B.cjs"),t=require("./resolve-source-sdk-BNnltA8w.cjs"),n=require("./read-command-values-uSJqBG_E.cjs"),r=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),i=require("./resolve-app-project-B0KRR-xp.cjs"),a=require("./create-tooling-failure-B2FmNwR2.cjs"),o=require("./cli-version.constant-B92ETb2e.cjs");var s={build:`Building`,typecheck:`Typechecking`},c=({release:t,isSnapshotHeld:n})=>n?!e.u(t)||t.success!==!0:e.u(t)&&t.success===!1,l=async({operation:l,parseData:u,context:{options:d,output:f,outputMode:p,signal:m},useHeldBuild:h})=>{let g=await i.t({explicitPath:n.r(d,`path`),workingDirectory:process.cwd()}),_=await t.t({appPath:g.path,warn:f.warn});f.progress({message:`${s[l]} ${g.name} with twenty ${o.t}…`});let v=performance.now(),y=({result:e,output:t})=>{let n=r.o({value:e,parseData:u}),i=[...n.diagnostics,...r.t(t)];if(p===`human`)for(let e of i)f.progress({message:r.s(e)});if(!n.success)throw a.t({error:n.error,diagnostics:i,sdkVersion:_.version});return{data:n.data,diagnostics:i}},b,x=await r.n({request:l===`build`?{type:`bundleSnapshot`,appPath:g.path,holdSnapshot:e.Ut(h)}:{type:`typecheckSource`,appPath:g.path},signal:m,...e.Ut(h)?{useHeldSnapshot:async e=>{b=y(e),await h({project:g,sdk:_,...b})}}:{}});e.Ut(b)||m.throwIfAborted();let{data:S,diagnostics:C}=b??y(x);return c(x)&&f.warn({code:`SNAPSHOT_RELEASE_FAILED`,message:`The temporary build snapshot could not be removed. You can delete .twenty/cli/snapshots once no build is running.`}),{project:g,sdk:_,data:S,diagnostics:C,durationMilliseconds:Math.round(performance.now()-v)}},u=({context:e,useHeldBuild:t})=>l({operation:`build`,parseData:r.i,context:e,useHeldBuild:t}),d=({context:e})=>l({operation:`typecheck`,parseData:r.a,context:e});Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return u}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./get-app-plan-summary-C-CQdNrh.cjs"),t=require("./run-app-operation-
|
|
1
|
+
const e=require("./get-app-plan-summary-C-CQdNrh.cjs"),t=require("./run-app-operation-BLlHL5Nk.cjs");var n=async n=>{let r=performance.now(),{project:i,sdk:a,data:o,diagnostics:s}=await t.t({context:n}),c=n.options.delete!==!1;n.output.progress({message:`Computing metadata plan (read-only, nothing will be applied)…`});let l=await e.i({build:o,inferDeletionFromMissingEntities:c,target:n.target,signal:n.signal}),u=e.t(l);return{data:{app:{path:i.path,name:i.name},sdk:{version:a.version},application:o.application,contentHash:o.contentHash,plan:!0,inferDeletionFromMissingEntities:c,actions:l,summary:u,diagnostics:s,durationMilliseconds:Math.round(performance.now()-r)},human:e.n({applicationName:o.application.displayName,apiUrl:n.target.apiUrl,actions:l,summary:u,inferDeletionFromMissingEntities:c})}};exports.runAppPlanCommand=n;
|
package/dist/chunks/{run-app-publish-command-DiIlqdTg.cjs → run-app-publish-command-9zd_f_a3.cjs}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./cli-error-CSsayo0u.cjs"),r=require("./read-command-values-uSJqBG_E.cjs"),i=require("./create-cancelled-error-DgrNfOv2.cjs"),a=require("./is-interaction-allowed-CF-ko1KI.cjs"),o=require("./style-BR52fK4V.cjs"),s=require("./with-phase-details-Dof8Ao9R.cjs"),c=require("./to-cli-error-BBYf_wqo.cjs"),l=require("./create-metadata-client-9IF8ArjT.cjs"),u=require("./read-snapshot-file-CxPJh0Bk.cjs"),d=require("./run-app-operation-
|
|
1
|
+
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./cli-error-CSsayo0u.cjs"),r=require("./read-command-values-uSJqBG_E.cjs"),i=require("./create-cancelled-error-DgrNfOv2.cjs"),a=require("./is-interaction-allowed-CF-ko1KI.cjs"),o=require("./style-BR52fK4V.cjs"),s=require("./with-phase-details-Dof8Ao9R.cjs"),c=require("./to-cli-error-BBYf_wqo.cjs"),l=require("./create-metadata-client-9IF8ArjT.cjs"),u=require("./read-snapshot-file-CxPJh0Bk.cjs"),d=require("./run-app-operation-BLlHL5Nk.cjs"),f=require("./to-public-target-bNT50le0.cjs"),p=require("./resolve-command-target-BWCnYRCn.cjs");let m=require("node:fs/promises"),h=require("node:path"),g=require("node:fs");var _=e.t(),v=async({packedApp:e,context:{target:r,signal:i,output:a}})=>{let o=`prepare-upload`,d=[],p;try{i.throwIfAborted();let{size:s}=await(0,m.stat)(e.path),c=l.t({target:r,signal:i}),v=(await c.mutation({__name:`CreateAppTarballUpload`,createFileUpload:{__args:{filename:(0,h.basename)(e.path),size:s,fileFolder:`AppTarball`},fileId:!0,uploadUrl:!0,contentType:!0}})).createFileUpload;if(!t.u(v)||!(0,_.isNonEmptyString)(v.fileId)||!(0,_.isNonEmptyString)(v.uploadUrl)||!(0,_.isNonEmptyString)(v.contentType))throw new n.t({code:`INVALID_RESPONSE`,message:`The server returned an invalid tarball upload target.`});p=v.fileId,d.push(o),o=`upload`,a.progress({message:`Uploading ${e.name}@${e.version} to ${r.apiUrl}…`});let y=await u.r({uploadUrl:v.uploadUrl,contentType:v.contentType,bytes:await(0,g.openAsBlob)(e.path),signal:i});if(y<200||y>=300)throw new n.t({code:`UPLOAD_FAILED`,message:`File storage answered ${y}.`});d.push(o),i.throwIfAborted(),a.progress({message:`Registering the uploaded app…`}),o=`register`;let b=(await c.mutation({__name:`CompleteAppTarballUpload`,completeAppTarballUpload:{__args:{fileId:p},id:!0,name:!0,universalIdentifier:!0}})).completeAppTarballUpload;if(!t.u(b)||!(0,_.isNonEmptyString)(b.id)||!(0,_.isNonEmptyString)(b.name)||!(0,_.isNonEmptyString)(b.universalIdentifier))throw new n.t({code:`INVALID_RESPONSE`,message:`The server did not return the published app registration.`});return d.push(o),{target:`private`,registry:f.t(r),name:e.name,version:e.version,registration:b,fileId:p,installed:!1}}catch(e){let a=s.t({error:c.t(e,i),phase:o,completedPhases:d,outcome:o===`register`?`unknown`:`not-published`,hint:o===`register`?`The app may already be registered. Check the server registry before retrying; publishing does not install the app.`:`Fix the problem, then run twenty app publish --private again to create a fresh upload.`});throw new n.t({cause:a,code:a.code,exitCode:a.exitCode,message:a.message,hint:a.hint,details:{...a.details,...t.Ut(p)?{fileId:p}:{},registry:f.t(r)}})}},y=e.n(((e,t)=>{t.exports=a,a.sync=o;var n=require("fs");function r(e,t){var n=t.pathExt===void 0?process.env.PATHEXT:t.pathExt;if(!n||(n=n.split(`;`),n.indexOf(``)!==-1))return!0;for(var r=0;r<n.length;r++){var i=n[r].toLowerCase();if(i&&e.substr(-i.length).toLowerCase()===i)return!0}return!1}function i(e,t,n){return!e.isSymbolicLink()&&!e.isFile()?!1:r(t,n)}function a(e,t,r){n.stat(e,function(n,a){r(n,n?!1:i(a,e,t))})}function o(e,t){return i(n.statSync(e),e,t)}})),b=e.n(((e,t)=>{t.exports=r,r.sync=i;var n=require("fs");function r(e,t,r){n.stat(e,function(e,n){r(e,e?!1:a(n,t))})}function i(e,t){return a(n.statSync(e),t)}function a(e,t){return e.isFile()&&o(e,t)}function o(e,t){var n=e.mode,r=e.uid,i=e.gid,a=t.uid===void 0?process.getuid&&process.getuid():t.uid,o=t.gid===void 0?process.getgid&&process.getgid():t.gid,s=64,c=8,l=1,u=s|c;return n&l||n&c&&i===o||n&s&&r===a||n&u&&a===0}})),x=e.n(((e,t)=>{require("fs");var n=process.platform===`win32`||global.TESTING_WINDOWS?y():b();t.exports=r,r.sync=i;function r(e,t,i){if(typeof t==`function`&&(i=t,t={}),!i){if(typeof Promise!=`function`)throw TypeError(`callback not provided`);return new Promise(function(n,i){r(e,t||{},function(e,t){e?i(e):n(t)})})}n(e,t||{},function(e,n){e&&(e.code===`EACCES`||t&&t.ignoreErrors)&&(e=null,n=!1),i(e,n)})}function i(e,t){try{return n.sync(e,t||{})}catch(e){if(t&&t.ignoreErrors||e.code===`EACCES`)return!1;throw e}}})),S=e.n(((e,t)=>{var n=process.platform===`win32`||process.env.OSTYPE===`cygwin`||process.env.OSTYPE===`msys`,r=require("path"),i=n?`;`:`:`,a=x(),o=e=>Object.assign(Error(`not found: ${e}`),{code:`ENOENT`}),s=(e,t)=>{let r=t.colon||i,a=e.match(/\//)||n&&e.match(/\\/)?[``]:[...n?[process.cwd()]:[],...(t.path||process.env.PATH||``).split(r)],o=n?t.pathExt||process.env.PATHEXT||`.EXE;.CMD;.BAT;.COM`:``,s=n?o.split(r):[``];return n&&e.indexOf(`.`)!==-1&&s[0]!==``&&s.unshift(``),{pathEnv:a,pathExt:s,pathExtExe:o}},c=(e,t,n)=>{typeof t==`function`&&(n=t,t={}),t||={};let{pathEnv:i,pathExt:c,pathExtExe:l}=s(e,t),u=[],d=n=>new Promise((a,s)=>{if(n===i.length)return t.all&&u.length?a(u):s(o(e));let c=i[n],l=/^".*"$/.test(c)?c.slice(1,-1):c,d=r.join(l,e);a(f(!l&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d,n,0))}),f=(e,n,r)=>new Promise((i,o)=>{if(r===c.length)return i(d(n+1));let s=c[r];a(e+s,{pathExt:l},(a,o)=>{if(!a&&o)if(t.all)u.push(e+s);else return i(e+s);return i(f(e,n,r+1))})});return n?d(0).then(e=>n(null,e),n):d(0)};t.exports=c,c.sync=(e,t)=>{t||={};let{pathEnv:n,pathExt:i,pathExtExe:c}=s(e,t),l=[];for(let o=0;o<n.length;o++){let s=n[o],u=/^".*"$/.test(s)?s.slice(1,-1):s,d=r.join(u,e),f=!u&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;for(let e=0;e<i.length;e++){let n=f+i[e];try{if(a.sync(n,{pathExt:c}))if(t.all)l.push(n);else return n}catch{}}}if(t.all&&l.length)return l;if(t.nothrow)return null;throw o(e)}})),C=e.n(((e,t)=>{var n=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)===`win32`?Object.keys(t).reverse().find(e=>e.toUpperCase()===`PATH`)||`Path`:`PATH`};t.exports=n,t.exports.default=n})),w=e.n(((e,t)=>{var n=require("path"),r=S(),i=C();function a(e,t){let a=e.options.env||process.env,o=process.cwd(),s=e.options.cwd!=null,c=s&&process.chdir!==void 0&&!process.chdir.disabled;if(c)try{process.chdir(e.options.cwd)}catch{}let l;try{l=r.sync(e.command,{path:a[i({env:a})],pathExt:t?n.delimiter:void 0})}catch{}finally{c&&process.chdir(o)}return l&&=n.resolve(s?e.options.cwd:``,l),l}function o(e){return a(e)||a(e,!0)}t.exports=o})),T=e.n(((e,t)=>{var n=/([()\][%!^"`<>&|;, *?])/g;function r(e){return e=e.replace(n,`^$1`),e}function i(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,`$1$1\\"`),e=e.replace(/(?=(\\+?)?)\1$/,`$1$1`),e=`"${e}"`,e=e.replace(n,`^$1`),t&&(e=e.replace(n,`^$1`)),e}t.exports.command=r,t.exports.argument=i})),E=e.n(((e,t)=>{t.exports=/^#!(.*)/})),D=e.n(((e,t)=>{var n=E();t.exports=(e=``)=>{let t=e.match(n);if(!t)return null;let[r,i]=t[0].replace(/#! ?/,``).split(` `),a=r.split(`/`).pop();return a===`env`?i:i?`${a} ${i}`:a}})),O=e.n(((e,t)=>{var n=require("fs"),r=D();function i(e){let t=Buffer.alloc(150),i;try{i=n.openSync(e,`r`),n.readSync(i,t,0,150,0),n.closeSync(i)}catch{}return r(t.toString())}t.exports=i})),k=e.n(((e,t)=>{var n=require("path"),r=w(),i=T(),a=O(),o=process.platform===`win32`,s=/\.(?:com|exe)$/i,c=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function l(e){e.file=r(e);let t=e.file&&a(e.file);return t?(e.args.unshift(e.file),e.command=t,r(e)):e.file}function u(e){if(!o)return e;let t=l(e),r=!s.test(t);if(e.options.forceShell||r){let r=c.test(t);e.command=n.normalize(e.command),e.command=i.command(e.command),e.args=e.args.map(e=>i.argument(e,r)),e.args=[`/d`,`/s`,`/c`,`"${[e.command].concat(e.args).join(` `)}"`],e.command=process.env.comspec||`cmd.exe`,e.options.windowsVerbatimArguments=!0}return e}function d(e,t,n){t&&!Array.isArray(t)&&(n=t,t=null),t=t?t.slice(0):[],n=Object.assign({},n);let r={command:e,args:t,options:n,file:void 0,original:{command:e,args:t}};return n.shell?r:u(r)}t.exports=d})),A=e.n(((e,t)=>{var n=process.platform===`win32`;function r(e,t){return Object.assign(Error(`${t} ${e.command} ENOENT`),{code:`ENOENT`,errno:`ENOENT`,syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function i(e,t){if(!n)return;let r=e.emit;e.emit=function(n,i){if(n===`exit`){let n=a(i,t);if(n)return r.call(e,`error`,n)}return r.apply(e,arguments)}}function a(e,t){return n&&e===1&&!t.file?r(t.original,`spawn`):null}function o(e,t){return n&&e===1&&!t.file?r(t.original,`spawnSync`):null}t.exports={hookChildProcess:i,verifyENOENT:a,verifyENOENTSync:o,notFoundError:r}})),j=e.n(((e,t)=>{var n=require("child_process"),r=k(),i=A();function a(e,t,a){let o=r(e,t,a),s=n.spawn(o.command,o.args,o.options);return i.hookChildProcess(s,o),s}function o(e,t,a){let o=r(e,t,a),s=n.spawnSync(o.command,o.args,o.options);return s.error=s.error||i.verifyENOENTSync(s.status,o),s}t.exports=a,t.exports.spawn=a,t.exports.sync=o,t.exports._parse=r,t.exports._enoent=i})),M=e.n(((e,t)=>{t.exports=e=>{let t=typeof e==`string`?`
|
|
2
2
|
`:10,n=typeof e==`string`?`\r`:13;return e[e.length-1]===t&&(e=e.slice(0,e.length-1)),e[e.length-1]===n&&(e=e.slice(0,e.length-1)),e}})),N=e.n(((e,t)=>{var n=require("path"),r=C(),i=e=>{e={cwd:process.cwd(),path:process.env[r()],execPath:process.execPath,...e};let t,i=n.resolve(e.cwd),a=[];for(;t!==i;)a.push(n.join(i,`node_modules/.bin`)),t=i,i=n.resolve(i,`..`);let o=n.resolve(e.cwd,e.execPath,`..`);return a.push(o),a.concat(e.path).join(n.delimiter)};t.exports=i,t.exports.default=i,t.exports.env=e=>{e={env:process.env,...e};let n={...e.env},i=r({env:n});return e.path=n[i],n[i]=t.exports(e),n}})),P=e.n(((e,t)=>{var n=(e,t)=>{for(let n of Reflect.ownKeys(t))Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n));return e};t.exports=n,t.exports.default=n})),F=e.n(((e,t)=>{var n=P(),r=new WeakMap,i=(e,t={})=>{if(typeof e!=`function`)throw TypeError(`Expected a function`);let i,a=0,o=e.displayName||e.name||`<anonymous>`,s=function(...n){if(r.set(s,++a),a===1)i=e.apply(this,n),e=null;else if(t.throw===!0)throw Error(`Function \`${o}\` can only be called once`);return i};return n(s,e),r.set(s,a),s};t.exports=i,t.exports.default=i,t.exports.callCount=e=>{if(!r.has(e))throw Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return r.get(e)}})),I=e.n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.SIGNALS=void 0,e.SIGNALS=[{name:`SIGHUP`,number:1,action:`terminate`,description:`Terminal closed`,standard:`posix`},{name:`SIGINT`,number:2,action:`terminate`,description:`User interruption with CTRL-C`,standard:`ansi`},{name:`SIGQUIT`,number:3,action:`core`,description:`User interruption with CTRL-\\`,standard:`posix`},{name:`SIGILL`,number:4,action:`core`,description:`Invalid machine instruction`,standard:`ansi`},{name:`SIGTRAP`,number:5,action:`core`,description:`Debugger breakpoint`,standard:`posix`},{name:`SIGABRT`,number:6,action:`core`,description:`Aborted`,standard:`ansi`},{name:`SIGIOT`,number:6,action:`core`,description:`Aborted`,standard:`bsd`},{name:`SIGBUS`,number:7,action:`core`,description:`Bus error due to misaligned, non-existing address or paging error`,standard:`bsd`},{name:`SIGEMT`,number:7,action:`terminate`,description:`Command should be emulated but is not implemented`,standard:`other`},{name:`SIGFPE`,number:8,action:`core`,description:`Floating point arithmetic error`,standard:`ansi`},{name:`SIGKILL`,number:9,action:`terminate`,description:`Forced termination`,standard:`posix`,forced:!0},{name:`SIGUSR1`,number:10,action:`terminate`,description:`Application-specific signal`,standard:`posix`},{name:`SIGSEGV`,number:11,action:`core`,description:`Segmentation fault`,standard:`ansi`},{name:`SIGUSR2`,number:12,action:`terminate`,description:`Application-specific signal`,standard:`posix`},{name:`SIGPIPE`,number:13,action:`terminate`,description:`Broken pipe or socket`,standard:`posix`},{name:`SIGALRM`,number:14,action:`terminate`,description:`Timeout or timer`,standard:`posix`},{name:`SIGTERM`,number:15,action:`terminate`,description:`Termination`,standard:`ansi`},{name:`SIGSTKFLT`,number:16,action:`terminate`,description:`Stack is empty or overflowed`,standard:`other`},{name:`SIGCHLD`,number:17,action:`ignore`,description:`Child process terminated, paused or unpaused`,standard:`posix`},{name:`SIGCLD`,number:17,action:`ignore`,description:`Child process terminated, paused or unpaused`,standard:`other`},{name:`SIGCONT`,number:18,action:`unpause`,description:`Unpaused`,standard:`posix`,forced:!0},{name:`SIGSTOP`,number:19,action:`pause`,description:`Paused`,standard:`posix`,forced:!0},{name:`SIGTSTP`,number:20,action:`pause`,description:`Paused using CTRL-Z or "suspend"`,standard:`posix`},{name:`SIGTTIN`,number:21,action:`pause`,description:`Background process cannot read terminal input`,standard:`posix`},{name:`SIGBREAK`,number:21,action:`terminate`,description:`User interruption with CTRL-BREAK`,standard:`other`},{name:`SIGTTOU`,number:22,action:`pause`,description:`Background process cannot write to terminal output`,standard:`posix`},{name:`SIGURG`,number:23,action:`ignore`,description:`Socket received out-of-band data`,standard:`bsd`},{name:`SIGXCPU`,number:24,action:`core`,description:`Process timed out`,standard:`bsd`},{name:`SIGXFSZ`,number:25,action:`core`,description:`File too big`,standard:`bsd`},{name:`SIGVTALRM`,number:26,action:`terminate`,description:`Timeout or timer`,standard:`bsd`},{name:`SIGPROF`,number:27,action:`terminate`,description:`Timeout or timer`,standard:`bsd`},{name:`SIGWINCH`,number:28,action:`ignore`,description:`Terminal window size changed`,standard:`bsd`},{name:`SIGIO`,number:29,action:`terminate`,description:`I/O is available`,standard:`other`},{name:`SIGPOLL`,number:29,action:`terminate`,description:`Watched event`,standard:`other`},{name:`SIGINFO`,number:29,action:`ignore`,description:`Request for process information`,standard:`other`},{name:`SIGPWR`,number:30,action:`terminate`,description:`Device running out of power`,standard:`systemv`},{name:`SIGSYS`,number:31,action:`core`,description:`Invalid system call`,standard:`other`},{name:`SIGUNUSED`,number:31,action:`terminate`,description:`Invalid system call`,standard:`other`}]})),L=e.n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.SIGRTMAX=e.getRealtimeSignals=void 0,e.getRealtimeSignals=function(){let e=r-n+1;return Array.from({length:e},t)};var t=function(e,t){return{name:`SIGRT${t+1}`,number:n+t,action:`terminate`,description:`Application-specific signal (realtime)`,standard:`posix`}},n=34,r=64;e.SIGRTMAX=r})),R=e.n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.getSignals=void 0;var t=require("os"),n=I(),r=L();e.getSignals=function(){let e=(0,r.getRealtimeSignals)();return[...n.SIGNALS,...e].map(i)};var i=function({name:e,number:n,description:r,action:i,forced:a=!1,standard:o}){let{signals:{[e]:s}}=t.constants,c=s!==void 0;return{name:e,number:c?s:n,description:r,supported:c,action:i,forced:a,standard:o}}})),z=e.n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.signalsByNumber=e.signalsByName=void 0;var t=require("os"),n=R(),r=L(),i=function(){return(0,n.getSignals)().reduce(a,{})},a=function(e,{name:t,number:n,description:r,supported:i,action:a,forced:o,standard:s}){return{...e,[t]:{name:t,number:n,description:r,supported:i,action:a,forced:o,standard:s}}};e.signalsByName=i();var o=function(){let e=(0,n.getSignals)(),t=r.SIGRTMAX+1,i=Array.from({length:t},(t,n)=>s(n,e));return Object.assign({},...i)},s=function(e,t){let n=c(e,t);if(n===void 0)return{};let{name:r,description:i,supported:a,action:o,forced:s,standard:l}=n;return{[e]:{name:r,number:e,description:i,supported:a,action:o,forced:s,standard:l}}},c=function(e,n){let r=n.find(({name:n})=>t.constants.signals[n]===e);return r===void 0?n.find(t=>t.number===e):r};e.signalsByNumber=o()})),B=e.n(((e,t)=>{var{signalsByName:n}=z(),r=({timedOut:e,timeout:t,errorCode:n,signal:r,signalDescription:i,exitCode:a,isCanceled:o})=>e?`timed out after ${t} milliseconds`:o?`was canceled`:n===void 0?r===void 0?a===void 0?`failed`:`failed with exit code ${a}`:`was killed with ${r} (${i})`:`failed with ${n}`;t.exports=({stdout:e,stderr:t,all:i,error:a,signal:o,exitCode:s,command:c,escapedCommand:l,timedOut:u,isCanceled:d,killed:f,parsed:{options:{timeout:p}}})=>{s=s===null?void 0:s,o=o===null?void 0:o;let m=o===void 0?void 0:n[o].description,h=`Command ${r({timedOut:u,timeout:p,errorCode:a&&a.code,signal:o,signalDescription:m,exitCode:s,isCanceled:d})}: ${c}`,g=Object.prototype.toString.call(a)===`[object Error]`,_=g?`${h}\n${a.message}`:h,v=[_,t,e].filter(Boolean).join(`
|
|
3
3
|
`);return g?(a.originalMessage=a.message,a.message=v):a=Error(v),a.shortMessage=_,a.command=c,a.escapedCommand=l,a.exitCode=s,a.signal=o,a.signalDescription=m,a.stdout=e,a.stderr=t,i!==void 0&&(a.all=i),`bufferedData`in a&&delete a.bufferedData,a.failed=!0,a.timedOut=!!u,a.isCanceled=d,a.killed=f&&!u,a}})),V=e.n(((e,t)=>{var n=[`stdin`,`stdout`,`stderr`],r=e=>n.some(t=>e[t]!==void 0),i=e=>{if(!e)return;let{stdio:t}=e;if(t===void 0)return n.map(t=>e[t]);if(r(e))throw Error(`It's not possible to provide \`stdio\` in combination with one of ${n.map(e=>`\`${e}\``).join(`, `)}`);if(typeof t==`string`)return t;if(!Array.isArray(t))throw TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof t}\``);let i=Math.max(t.length,n.length);return Array.from({length:i},(e,n)=>t[n])};t.exports=i,t.exports.node=e=>{let t=i(e);return t===`ipc`?`ipc`:t===void 0||typeof t==`string`?[t,t,t,`ipc`]:t.includes(`ipc`)?t:[...t,`ipc`]}})),H=e.n(((e,t)=>{t.exports=[`SIGABRT`,`SIGALRM`,`SIGHUP`,`SIGINT`,`SIGTERM`],process.platform!==`win32`&&t.exports.push(`SIGVTALRM`,`SIGXCPU`,`SIGXFSZ`,`SIGUSR2`,`SIGTRAP`,`SIGSYS`,`SIGQUIT`,`SIGIOT`),process.platform===`linux`&&t.exports.push(`SIGIO`,`SIGPOLL`,`SIGPWR`,`SIGSTKFLT`,`SIGUNUSED`)})),U=e.n(((e,t)=>{var n=global.process,r=function(e){return e&&typeof e==`object`&&typeof e.removeListener==`function`&&typeof e.emit==`function`&&typeof e.reallyExit==`function`&&typeof e.listeners==`function`&&typeof e.kill==`function`&&typeof e.pid==`number`&&typeof e.on==`function`};if(!r(n))t.exports=function(){return function(){}};else{var i=require("assert"),a=H(),o=/^win/i.test(n.platform),s=require("events");typeof s!=`function`&&(s=s.EventEmitter);var c;n.__signal_exit_emitter__?c=n.__signal_exit_emitter__:(c=n.__signal_exit_emitter__=new s,c.count=0,c.emitted={}),c.infinite||(c.setMaxListeners(1/0),c.infinite=!0),t.exports=function(e,t){if(!r(global.process))return function(){};i.equal(typeof e,`function`,`a callback must be provided for exit handler`),f===!1&&p();var n=`exit`;return t&&t.alwaysLast&&(n=`afterexit`),c.on(n,e),function(){c.removeListener(n,e),c.listeners(`exit`).length===0&&c.listeners(`afterexit`).length===0&&l()}};var l=function(){!f||!r(global.process)||(f=!1,a.forEach(function(e){try{n.removeListener(e,d[e])}catch{}}),n.emit=g,n.reallyExit=m,--c.count)};t.exports.unload=l;var u=function(e,t,n){c.emitted[e]||(c.emitted[e]=!0,c.emit(e,t,n))},d={};a.forEach(function(e){d[e]=function(){r(global.process)&&n.listeners(e).length===c.count&&(l(),u(`exit`,null,e),u(`afterexit`,null,e),o&&e===`SIGHUP`&&(e=`SIGINT`),n.kill(n.pid,e))}}),t.exports.signals=function(){return a};var f=!1,p=function(){f||!r(global.process)||(f=!0,c.count+=1,a=a.filter(function(e){try{return n.on(e,d[e]),!0}catch{return!1}}),n.emit=_,n.reallyExit=h)};t.exports.load=p;var m=n.reallyExit,h=function(e){r(global.process)&&(n.exitCode=e||0,u(`exit`,n.exitCode,null),u(`afterexit`,n.exitCode,null),m.call(n,n.exitCode))},g=n.emit,_=function(e,t){if(e===`exit`&&r(global.process)){t!==void 0&&(n.exitCode=t);var i=g.apply(this,arguments);return u(`exit`,n.exitCode,null),u(`afterexit`,n.exitCode,null),i}else return g.apply(this,arguments)}}})),W=e.n(((e,t)=>{var n=require("os"),r=U(),i=1e3*5,a=(e,t=`SIGTERM`,n={})=>{let r=e(t);return o(e,t,n,r),r},o=(e,t,n,r)=>{if(!s(t,n,r))return;let i=l(n),a=setTimeout(()=>{e(`SIGKILL`)},i);a.unref&&a.unref()},s=(e,{forceKillAfterTimeout:t},n)=>c(e)&&t!==!1&&n,c=e=>e===n.constants.signals.SIGTERM||typeof e==`string`&&e.toUpperCase()===`SIGTERM`,l=({forceKillAfterTimeout:e=!0})=>{if(e===!0)return i;if(!Number.isFinite(e)||e<0)throw TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`);return e},u=(e,t)=>{e.kill()&&(t.isCanceled=!0)},d=(e,t,n)=>{e.kill(t),n(Object.assign(Error(`Timed out`),{timedOut:!0,signal:t}))};t.exports={spawnedKill:a,spawnedCancel:u,setupTimeout:(e,{timeout:t,killSignal:n=`SIGTERM`},r)=>{if(t===0||t===void 0)return r;let i,a=new Promise((r,a)=>{i=setTimeout(()=>{d(e,n,a)},t)}),o=r.finally(()=>{clearTimeout(i)});return Promise.race([a,o])},validateTimeout:({timeout:e})=>{if(e!==void 0&&(!Number.isFinite(e)||e<0))throw TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`)},setExitHandler:async(e,{cleanup:t,detached:n},i)=>{if(!t||n)return i;let a=r(()=>{e.kill()});return i.finally(()=>{a()})}}})),G=e.n(((e,t)=>{var n=e=>typeof e==`object`&&!!e&&typeof e.pipe==`function`;n.writable=e=>n(e)&&e.writable!==!1&&typeof e._write==`function`&&typeof e._writableState==`object`,n.readable=e=>n(e)&&e.readable!==!1&&typeof e._read==`function`&&typeof e._readableState==`object`,n.duplex=e=>n.writable(e)&&n.readable(e),n.transform=e=>n.duplex(e)&&typeof e._transform==`function`,t.exports=n})),K=e.n(((e,t)=>{var{PassThrough:n}=require("stream");t.exports=e=>{e={...e};let{array:t}=e,{encoding:r}=e,i=r===`buffer`,a=!1;t?a=!(r||i):r||=`utf8`,i&&(r=null);let o=new n({objectMode:a});r&&o.setEncoding(r);let s=0,c=[];return o.on(`data`,e=>{c.push(e),a?s=c.length:s+=e.length}),o.getBufferedValue=()=>t?c:i?Buffer.concat(c,s):c.join(``),o.getBufferedLength=()=>s,o}})),q=e.n(((e,t)=>{var{constants:n}=require("buffer"),r=require("stream"),{promisify:i}=require("util"),a=K(),o=i(r.pipeline),s=class extends Error{constructor(){super(`maxBuffer exceeded`),this.name=`MaxBufferError`}};async function c(e,t){if(!e)throw Error(`Expected a stream`);t={maxBuffer:1/0,...t};let{maxBuffer:r}=t,i=a(t);return await new Promise((t,a)=>{let c=e=>{e&&i.getBufferedLength()<=n.MAX_LENGTH&&(e.bufferedData=i.getBufferedValue()),a(e)};(async()=>{try{await o(e,i),t()}catch(e){c(e)}})(),i.on(`data`,()=>{i.getBufferedLength()>r&&c(new s)})}),i.getBufferedValue()}t.exports=c,t.exports.buffer=(e,t)=>c(e,{...t,encoding:`buffer`}),t.exports.array=(e,t)=>c(e,{...t,array:!0}),t.exports.MaxBufferError=s})),J=e.n(((e,t)=>{var{PassThrough:n}=require("stream");t.exports=function(){var e=[],t=new n({objectMode:!0});return t.setMaxListeners(0),t.add=r,t.isEmpty=i,t.on(`unpipe`,a),Array.prototype.slice.call(arguments).forEach(r),t;function r(n){return Array.isArray(n)?(n.forEach(r),this):(e.push(n),n.once(`end`,a.bind(null,n)),n.once(`error`,t.emit.bind(t,`error`)),n.pipe(t,{end:!1}),this)}function i(){return e.length==0}function a(n){e=e.filter(function(e){return e!==n}),!e.length&&t.readable&&t.end()}}})),Y=e.n(((e,t)=>{var n=G(),r=q(),i=J(),a=(e,t)=>{t===void 0||e.stdin===void 0||(n(t)?t.pipe(e.stdin):e.stdin.end(t))},o=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;let n=i();return e.stdout&&n.add(e.stdout),e.stderr&&n.add(e.stderr),n},s=async(e,t)=>{if(e){e.destroy();try{return await t}catch(e){return e.bufferedData}}},c=(e,{encoding:t,buffer:n,maxBuffer:i})=>{if(!(!e||!n))return t?r(e,{encoding:t,maxBuffer:i}):r.buffer(e,{maxBuffer:i})};t.exports={handleInput:a,makeAllStream:o,getSpawnedResult:async({stdout:e,stderr:t,all:n},{encoding:r,buffer:i,maxBuffer:a},o)=>{let l=c(e,{encoding:r,buffer:i,maxBuffer:a}),u=c(t,{encoding:r,buffer:i,maxBuffer:a}),d=c(n,{encoding:r,buffer:i,maxBuffer:a*2});try{return await Promise.all([o,l,u,d])}catch(r){return Promise.all([{error:r,signal:r.signal,timedOut:r.timedOut},s(e,l),s(t,u),s(n,d)])}},validateInputSync:({input:e})=>{if(n(e))throw TypeError("The `input` option cannot be a stream in sync mode")}}})),X=e.n(((e,t)=>{var n=(async()=>{})().constructor.prototype,r=[`then`,`catch`,`finally`].map(e=>[e,Reflect.getOwnPropertyDescriptor(n,e)]);t.exports={mergePromise:(e,t)=>{for(let[n,i]of r){let r=typeof t==`function`?(...e)=>Reflect.apply(i.value,t(),e):i.value.bind(t);Reflect.defineProperty(e,n,{...i,value:r})}return e},getSpawnedPromise:e=>new Promise((t,n)=>{e.on(`exit`,(e,n)=>{t({exitCode:e,signal:n})}),e.on(`error`,e=>{n(e)}),e.stdin&&e.stdin.on(`error`,e=>{n(e)})})}})),Z=e.n(((e,t)=>{var n=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],r=/^[\w.-]+$/,i=/"/g,a=e=>typeof e!=`string`||r.test(e)?e:`"${e.replace(i,`\\"`)}"`,o=(e,t)=>n(e,t).join(` `),s=(e,t)=>n(e,t).map(e=>a(e)).join(` `),c=/ +/g;t.exports={joinCommand:o,getEscapedCommand:s,parseCommand:e=>{let t=[];for(let n of e.trim().split(c)){let e=t[t.length-1];e&&e.endsWith(`\\`)?t[t.length-1]=`${e.slice(0,-1)} ${n}`:t.push(n)}return t}}})),Q=e.n(((e,t)=>{var n=require("path"),r=require("child_process"),i=j(),a=M(),o=N(),s=F(),c=B(),l=V(),{spawnedKill:u,spawnedCancel:d,setupTimeout:f,validateTimeout:p,setExitHandler:m}=W(),{handleInput:h,getSpawnedResult:g,makeAllStream:_,validateInputSync:v}=Y(),{mergePromise:y,getSpawnedPromise:b}=X(),{joinCommand:x,parseCommand:S,getEscapedCommand:C}=Z(),w=1e3*1e3*100,T=({env:e,extendEnv:t,preferLocal:n,localDir:r,execPath:i})=>{let a=t?{...process.env,...e}:e;return n?o.env({env:a,cwd:r,execPath:i}):a},E=(e,t,r={})=>{let a=i._parse(e,t,r);return e=a.command,t=a.args,r=a.options,r={maxBuffer:w,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:r.cwd||process.cwd(),execPath:process.execPath,encoding:`utf8`,reject:!0,cleanup:!0,all:!1,windowsHide:!0,...r},r.env=T(r),r.stdio=l(r),process.platform===`win32`&&n.basename(e,`.exe`)===`cmd`&&t.unshift(`/q`),{file:e,args:t,options:r,parsed:a}},D=(e,t,n)=>typeof t!=`string`&&!Buffer.isBuffer(t)?n===void 0?void 0:``:e.stripFinalNewline?a(t):t,O=(e,t,n)=>{let i=E(e,t,n),a=x(e,t),o=C(e,t);p(i.options);let l;try{l=r.spawn(i.file,i.args,i.options)}catch(e){return y(new r.ChildProcess,Promise.reject(c({error:e,stdout:``,stderr:``,all:``,command:a,escapedCommand:o,parsed:i,timedOut:!1,isCanceled:!1,killed:!1})))}let v=b(l),S=f(l,i.options,v),w=m(l,i.options,S),T={isCanceled:!1};l.kill=u.bind(null,l.kill.bind(l)),l.cancel=d.bind(null,l,T);let O=s(async()=>{let[{error:e,exitCode:t,signal:n,timedOut:r},s,u,d]=await g(l,i.options,w),f=D(i.options,s),p=D(i.options,u),m=D(i.options,d);if(e||t!==0||n!==null){let s=c({error:e,exitCode:t,signal:n,stdout:f,stderr:p,all:m,command:a,escapedCommand:o,parsed:i,timedOut:r,isCanceled:T.isCanceled,killed:l.killed});if(!i.options.reject)return s;throw s}return{command:a,escapedCommand:o,exitCode:0,stdout:f,stderr:p,all:m,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return h(l,i.options.input),l.all=_(l,i.options),y(l,O)};t.exports=O,t.exports.sync=(e,t,n)=>{let i=E(e,t,n),a=x(e,t),o=C(e,t);v(i.options);let s;try{s=r.spawnSync(i.file,i.args,i.options)}catch(e){throw c({error:e,stdout:``,stderr:``,all:``,command:a,escapedCommand:o,parsed:i,timedOut:!1,isCanceled:!1,killed:!1})}let l=D(i.options,s.stdout,s.error),u=D(i.options,s.stderr,s.error);if(s.error||s.status!==0||s.signal!==null){let e=c({stdout:l,stderr:u,error:s.error,signal:s.signal,exitCode:s.status,command:a,escapedCommand:o,parsed:i,timedOut:s.error&&s.error.code===`ETIMEDOUT`,isCanceled:!1,killed:s.signal!==null});if(!i.options.reject)return e;throw e}return{command:a,escapedCommand:o,exitCode:0,stdout:l,stderr:u,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}},t.exports.command=(e,t)=>{let[n,...r]=S(e);return O(n,r,t)},t.exports.commandSync=(e,t)=>{let[n,...r]=S(e);return O.sync(n,r,t)},t.exports.node=(e,t,n={})=>{t&&!Array.isArray(t)&&typeof t==`object`&&(n=t,t=[]);let r=l.node(n),i=process.execArgv.filter(e=>!e.startsWith(`--inspect`)),{nodePath:a=process.execPath,nodeOptions:o=i}=n;return O(a,[...o,e,...Array.isArray(t)?t:[]],{...n,stdin:void 0,stdout:void 0,stderr:void 0,stdio:r,shell:!1})}})),ee=e.i(Q()),$=async({args:e,appPath:r,signal:a,canInteract:o=!1,onOutput:s})=>{a.throwIfAborted();let c=(0,ee.default)(`npm`,e,{cwd:r,stdio:o?`inherit`:[`ignore`,`pipe`,`pipe`],reject:!1,maxBuffer:4*1024*1024}),l=()=>c.kill(`SIGTERM`,{forceKillAfterTimeout:1e3});a.addEventListener(`abort`,l,{once:!0}),a.aborted&&l();try{let r=await c;if(a.aborted)throw i.t();if(!o&&t.Ut(s)&&((0,_.isNonEmptyString)(r.stdout)&&s(r.stdout),(0,_.isNonEmptyString)(r.stderr)&&s(r.stderr)),r.failed)throw new n.t({code:`PUBLISH_FAILED`,message:`npm ${e[0]} failed.`,hint:`Check that npm is installed and your npm registry credentials and package version are valid.`,details:{exitCode:r.exitCode,stdout:r.stdout?.slice(-16384)??``,stderr:r.stderr?.slice(-16384)??``}});return r.stdout??``}finally{a.removeEventListener(`abort`,l)}},te=async({packedApp:e,appPath:n,tag:r,context:i})=>{let o=t.Ut(process.env.ACTIONS_ID_TOKEN_REQUEST_URL)&&process.env.TWENTY_APP_PUBLISH_DISABLE_PROVENANCE!==`true`;return i.output.progress({message:`Publishing ${e.name}@${e.version} to npm…`}),await $({args:[`publish`,e.path,`--access`,`public`,`--ignore-scripts`,`--workspaces=false`,...o?[`--provenance`]:[],...t.Ut(r)?[`--tag`,r]:[]],appPath:n,signal:i.signal,canInteract:a.t(i),...i.outputMode===`human`?{onOutput:e=>i.output.progress({message:e})}:{}}),{target:`npm`,name:e.name,version:e.version,...t.Ut(r)?{tag:r}:{}}},ne=e=>{let r;try{r=JSON.parse(e)}catch(e){throw new n.t({code:`PUBLISH_FAILED`,message:`npm pack returned invalid JSON.`,cause:e})}let i=(0,_.isArray)(r)&&r.length===1?r[0]:void 0;if(!t.u(i)||!(0,_.isNonEmptyString)(i.name)||!(0,_.isNonEmptyString)(i.version)||!(0,_.isNonEmptyString)(i.filename)||(0,h.basename)(i.filename)!==i.filename||i.filename.includes(`\\`)||!i.filename.endsWith(`.tgz`)||!(0,_.isArray)(i.files))throw new n.t({code:`PUBLISH_FAILED`,message:`npm pack returned an invalid package description.`});let a=i.files.map(e=>{if(!t.u(e)||!(0,_.isNonEmptyString)(e.path))throw new n.t({code:`PUBLISH_FAILED`,message:`npm pack returned an invalid package file.`});return{path:e.path}});return{name:i.name,version:i.version,filename:i.filename,files:a}},re=async({appPath:e,build:t,signal:r,output:i,usePackage:a})=>{let o=u.a({build:t,appPath:e});for(let e of t.files)r.throwIfAborted(),await u.t({snapshotDirectory:o,artifact:e});let s=await(0,m.mkdtemp)((0,h.join)((0,h.dirname)(o),`package-`));try{i.progress({message:`Packing the built app…`});let c=ne(await $({args:[`pack`,o,`--json`,`--ignore-scripts`,`--workspaces=false`,`--pack-destination`,s],appPath:e,signal:r})),l=new Set(c.files.map(e=>e.path)),u=[`manifest.json`,`package.json`,...t.files.map(e=>e.path).filter(e=>e!==`yarn.lock`)],d=[...new Set(u)].filter(e=>!l.has(e));if(d.length>0)throw new n.t({code:`PUBLISH_FAILED`,message:`The npm package is missing files required by the built app.`,hint:`Update the files field in package.json to include the manifest and built files.`,details:{missingPaths:d}});return r.throwIfAborted(),await a({path:(0,h.join)(s,c.filename),name:c.name,version:c.version})}finally{await(0,m.rm)(s,{recursive:!0,force:!0}).catch(()=>{i.warn({code:`PACKAGE_CLEANUP_FAILED`,message:`Could not remove temporary package folder ${s}.`})})}},ie=async e=>{let i=r.r(e.options,`tag`),a=r.t(e.options,`private`);if(a&&t.Ut(i))throw new n.t({code:`INVALID_INPUT`,exitCode:n.n.USAGE,message:`--tag only applies to npm publishing.`});if(t.Ut(i)&&!/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(i))throw new n.t({code:`INVALID_INPUT`,exitCode:n.n.USAGE,message:`Invalid npm tag: ${i}.`});if(!a&&t.Ut(r.r(e.options,`remote`)))throw new n.t({code:`INVALID_INPUT`,exitCode:n.n.USAGE,message:`npm publishing does not use a Twenty remote.`});let s=a?await p.t(e):void 0,c,{project:l,diagnostics:u}=await d.t({context:e,useHeldBuild:async({project:n,data:r})=>{c=await re({appPath:n.path,build:r,signal:e.signal,output:e.output,usePackage:async r=>t.Ut(s)?v({packedApp:r,context:{target:s,signal:e.signal,output:e.output}}):te({packedApp:r,appPath:n.path,tag:i,context:e})})}});if(!t.Ut(c))throw new n.t({code:`PUBLISH_FAILED`,message:`The build did not provide a package to publish.`});return{data:{app:{path:l.path,name:l.name},...c,diagnostics:u},human:o.o(`Published ${c.name}@${c.version} to ${s?.apiUrl??`npm`}${a?`. Existing installations may upgrade automatically.`:``}`)}};exports.runAppPublishCommand=ie;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./application-DOWikeQt.cjs"),r=require("./cli-error-CSsayo0u.cjs"),i=require("./build-pull-entities-ShVsLh_s.cjs"),a=require("./read-command-values-uSJqBG_E.cjs"),o=require("./style-BR52fK4V.cjs"),s=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),c=require("./read-app-identity-
|
|
1
|
+
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./application-DOWikeQt.cjs"),r=require("./cli-error-CSsayo0u.cjs"),i=require("./build-pull-entities-ShVsLh_s.cjs"),a=require("./read-command-values-uSJqBG_E.cjs"),o=require("./style-BR52fK4V.cjs"),s=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),c=require("./read-app-identity-Da5yI23t.cjs"),l=require("./resolve-app-project-B0KRR-xp.cjs"),u=require("./format-data-value-kug8Yjt2.cjs"),d=require("./fetch-workspace-id-CsvJDu8b.cjs");var f=20,p=[{status:`UNSUPPORTED`,title:`Not written, unsupported by this version`},{status:`FOREIGN_OWNED`,title:`Owned by another application, not written`},{status:`EXCLUDED`,title:`Excluded as workspace runtime state`},{status:`ENGINE_DERIVED`,title:`Derived by the engine, rebuilt on apply`}],m=({title:e,relativePaths:t})=>t.length===0?[]:t.slice().sort().map(t=>` ${e.padEnd(13)}${t}`),h=e=>{let t=new Map;for(let n of e){let e=JSON.stringify([n.metadataName,n.reason]),r=t.get(e)??{metadataName:n.metadataName,reason:n.reason,identifiers:[]};r.identifiers.push(n.universalIdentifier),t.set(e,r)}return[...t.values()].sort((e,t)=>e.metadataName.localeCompare(t.metadataName)||(e.reason??``).localeCompare(t.reason??``))},g=({writes:e,deletions:n,unchangedCount:r,skipped:i,coverage:a,localOnlyRelativePaths:o,unreadableRelativePaths:s=[],compiledTranslationEntryCountByLocale:c={},entityLabelByUniversalIdentifier:l={},verbose:u=!1})=>{let d=[...m({title:`written`,relativePaths:e.filter(e=>!e.isRegeneration).map(e=>e.relativePath)}),...m({title:`regenerated`,relativePaths:e.filter(e=>e.isRegeneration).map(e=>e.relativePath)}),...m({title:`deleted`,relativePaths:n.map(e=>e.relativePath)})];if(r>0&&d.push(` unchanged ${r} file(s)`),i.length>0){d.push(``,`Not written by the writer:`);for(let e of i)d.push(` ${e.kind} ${e.reason}`)}s.length>0&&d.push(``,`Could not be read, so a second file may now define the same entity (check their diagnostics and SDK dependencies before pulling again):`,...s.slice().sort().map(e=>` ${e}`)),o.length>0&&d.push(``,`Local entities the workspace does not have (left untouched):`,...o.slice().sort().map(e=>` ${e}`));let g=a.filter(e=>e.status===`EXPORTED`&&t.Ut(e.reason)).map(e=>` ${e.metadataName} ${l[e.universalIdentifier]??e.universalIdentifier}: ${e.reason}`).sort();if(g.length>0){let e=u?g:g.slice(0,f);d.push(``,`Written without their workspace-local state (${g.length} row(s)):`,...e),g.length>e.length&&d.push(` …and ${g.length-e.length} more, listed with --verbose`)}for(let e of p){let t=a.filter(t=>t.status===e.status);if(t.length!==0){d.push(``,`${e.title} (${t.length} row(s)):`);for(let{metadataName:e,reason:n,identifiers:r}of h(t))if(d.push(` ${e.padEnd(34)}${String(r.length).padEnd(6)}${n??``}`.trimEnd()),u){for(let e of r.slice(0,f))d.push(` ${e}`);r.length>f&&d.push(` …and ${r.length-f} more`)}}}let _=Object.entries(c).filter(([,e])=>e>0).sort(([e],[t])=>e.localeCompare(t));return _.length>0&&d.push(``,`Translations kept in compiled form until their source strings are in this tree (see locales/compiled/):`,..._.map(([e,t])=>` ${e.padEnd(13)}${t} ${t===1?`entry`:`entries`}`)),d.join(`
|
|
2
2
|
`)},_=e.t(),v=e=>(0,_.isString)(e)&&i.t.some(t=>t===e),y=e=>t.u(e)&&(0,_.isString)(e.universalIdentifier)&&(0,_.isString)(e.relativePath),b=e=>t.u(e)&&(v(e.kind)||e.kind===`translation`)&&(0,_.isBoolean)(e.isRegeneration)&&y(e),x=e=>t.u(e)&&v(e.kind)&&(0,_.isString)(e.universalIdentifier)&&(0,_.isString)(e.reason),S=e=>t.u(e)&&Object.values(e).every(_.isString),C=e=>t.u(e)&&Object.values(e).every(_.isNumber),w=e=>{if(!t.u(e)||!t.u(e.application)||!(0,_.isString)(e.application.universalIdentifier)||!(0,_.isString)(e.application.displayName)||!t.u(e.base)||!(0,_.isArray)(e.writes)||!e.writes.every(b)||!(0,_.isArray)(e.deletions)||!e.deletions.every(y)||!(0,_.isArray)(e.overwrittenLocalChanges)||!e.overwrittenLocalChanges.every(y)||!(0,_.isNumber)(e.unchangedCount)||!(0,_.isArray)(e.localOnlyRelativePaths)||!e.localOnlyRelativePaths.every(_.isString)||!(0,_.isArray)(e.unreadableRelativePaths)||!e.unreadableRelativePaths.every(_.isString)||!(0,_.isArray)(e.skipped)||!e.skipped.every(x)||!C(e.compiledTranslationEntryCountByLocale)||!S(e.entityLabelByUniversalIdentifier))return;let n=e.base.status;if(!(n!==`used`&&n!==`missing`&&n!==`other-target`&&n!==`unbound`&&n!==`unreadable`))return{data:{application:{universalIdentifier:e.application.universalIdentifier,displayName:e.application.displayName},base:{status:n},writes:e.writes,deletions:e.deletions,overwrittenLocalChanges:e.overwrittenLocalChanges,unchangedCount:e.unchangedCount,localOnlyRelativePaths:e.localOnlyRelativePaths,unreadableRelativePaths:e.unreadableRelativePaths,skipped:e.skipped,compiledTranslationEntryCountByLocale:e.compiledTranslationEntryCountByLocale,entityLabelByUniversalIdentifier:e.entityLabelByUniversalIdentifier}}},T=async({options:e,target:i,signal:f,output:p,outputMode:m})=>{let h=await l.t({explicitPath:a.r(e,`path`),workingDirectory:process.cwd()}),_=a.r(e,`universalIdentifier`);if(t.Ut(_)&&!n.a(_))throw new r.t({code:`INVALID_INPUT`,exitCode:r.n.USAGE,message:`--universal-identifier must be a UUID of version 4 or later.`});let v=await c.t({appPath:h.path,signal:f,warn:p.warn}),y=(_??v.application?.universalIdentifier)?.toLowerCase();if(!t.Ut(y))throw new r.t({code:`INVALID_INPUT`,exitCode:r.n.USAGE,message:`This project has no application definition.`,hint:`Pass --universal-identifier <uuid> to pull an app into this project.`});if(t.Ut(v.application)&&v.application.universalIdentifier.toLowerCase()!==y)throw new r.t({code:`INVALID_INPUT`,exitCode:r.n.USAGE,message:`This project declares application ${v.application.universalIdentifier}, not ${y}. Pull it into a different directory.`});p.progress({message:`Exporting the app from ${i.apiUrl}…`});let[b,x]=await Promise.all([d.t({target:i,signal:f}),d.n({universalIdentifier:y,target:i,signal:f})]);p.progress({message:`Reconciling local definitions. Changed workspace entities replace local edits…`});let S=await s.n({request:{type:`pull`,appPath:h.path,target:{apiUrl:i.apiUrl,workspaceId:b},applicationExport:x},signal:f}).catch(e=>{throw new r.t({code:e instanceof r.t?e.code:`PULL_FAILED`,exitCode:e instanceof r.t?e.exitCode:r.n.FAILURE,message:e instanceof Error?e.message:String(e),hint:`The worker did not acknowledge completion. Inspect local changes and any backups in .twenty/cli/pull-backup-* before retrying.`,details:{...e instanceof r.t?e.details:{},outcome:`unknown`}})}),C=s.o({value:S.result,parseData:w}),T=[...v.diagnostics,...C.diagnostics,...s.t(S.output)];if(m===`human`)for(let e of T)p.progress({message:s.s(e)});if(!C.success)throw new r.t({code:C.error.code===`CANCELLED`?`CANCELLED`:C.error.code===`SDK_SOURCE_UNSUPPORTED`?`SDK_SOURCE_UNSUPPORTED`:`PULL_FAILED`,exitCode:C.error.code===`CANCELLED`?r.n.CANCELLED:r.n.FAILURE,message:C.error.message,hint:C.error.hint??(C.error.code===`SDK_SOURCE_UNSUPPORTED`?`Upgrade the app to a compatible twenty-sdk version (2.40.0 or later).`:void 0),details:{...C.error.details,diagnostics:T}});let E=C.data;(E.skipped.length>0||E.unreadableRelativePaths.length>0||x.coverage.some(e=>![`EXPORTED`,`ENGINE_DERIVED`].includes(e.status)))&&p.warn({code:`PULL_INCOMPLETE`,message:`Some entities could not be written. See coverage, skipped entities and unreadable files in the pull report.`});let D=g({...E,writes:E.writes.map(e=>({...e,relativePath:u.r(e.relativePath)})),deletions:E.deletions.map(e=>({...e,relativePath:u.r(e.relativePath)})),skipped:E.skipped.map(e=>({...e,reason:u.r(e.reason)})),localOnlyRelativePaths:E.localOnlyRelativePaths.map(u.r),unreadableRelativePaths:E.unreadableRelativePaths.map(u.r),entityLabelByUniversalIdentifier:Object.fromEntries(Object.entries(E.entityLabelByUniversalIdentifier).map(([e,t])=>[e,u.r(t)])),coverage:x.coverage.map(e=>({...e,metadataName:u.r(e.metadataName),universalIdentifier:u.r(e.universalIdentifier),reason:e.reason===null?null:u.r(e.reason)})),verbose:a.t(e,`verbose`)}),O=x.coverage.filter(e=>![`EXPORTED`,`UNSUPPORTED`,`FOREIGN_OWNED`,`EXCLUDED`,`ENGINE_DERIVED`].includes(e.status));return{data:{app:{path:h.path,name:h.name},...E,pulled:!0,coverage:x.coverage,diagnostics:T},human:[o.o(`Pulled ${u.r(E.application.displayName)} into ${u.r(h.path)}`),D,...E.base.status===`used`?[]:[`No matching pull base (${E.base.status}); local-only definitions were kept.`],...E.overwrittenLocalChanges.length>0?[`Local edits replaced by workspace changes:`,...E.overwrittenLocalChanges.map(e=>` ${u.r(e.relativePath)}`)]:[],...O.length>0?[`Unrecognized coverage, not written:`,...O.map(e=>` ${u.r(e.metadataName)} ${u.r(e.status)}: ${u.r(e.reason)}`)]:[],`Run ${o.r(`twenty app typecheck`)} to check the generated definitions.`].filter(Boolean).join(`
|
|
3
3
|
`)}};exports.runAppPullCommand=T;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./resolve-source-sdk-
|
|
1
|
+
const e=require("./build-CX6FBrbu.cjs"),t=require("./constants-D-caeNc5-9rDzSg5B.cjs"),n=require("./resolve-source-sdk-BNnltA8w.cjs"),r=require("./parse-extraction-locale-C7Gdd3Oa.cjs"),i=require("./read-command-values-uSJqBG_E.cjs"),a=require("./style-BR52fK4V.cjs"),o=require("./to-worker-output-diagnostics-BzdY4Z2V.cjs"),s=require("./resolve-app-project-B0KRR-xp.cjs"),c=require("./create-tooling-failure-B2FmNwR2.cjs");var l=e.t(),u=async e=>{let{options:u,output:d,outputMode:f,signal:p}=e,m=r.t(i.r(u,`locale`)),h=await s.t({explicitPath:i.r(u,`path`),workingDirectory:process.cwd()}),g=await n.t({appPath:h.path});d.progress({message:`Extracting translatable strings from ${h.name}…`});let _=await o.n({request:{type:`extractTranslations`,appPath:h.path,locale:m},signal:p}),v=o.o({value:_.result,parseData:e=>{if(!(!t.u(e)||!(0,l.isNumber)(e.sourceCount)||!(0,l.isArray)(e.updatedLocaleFiles)||!e.updatedLocaleFiles.every(l.isString)))return{data:{sourceCount:e.sourceCount,updatedLocaleFiles:e.updatedLocaleFiles}}}}),y=[...v.diagnostics,...o.t(_.output)];if(f===`human`)for(let e of y)d.progress({message:o.s(e)});if(!v.success)throw c.t({error:v.error,diagnostics:y,sdkVersion:g.version});return{data:{app:h,...v.data,diagnostics:y},human:[a.o(`Extracted ${v.data.sourceCount} ${v.data.sourceCount===1?`string`:`strings`} to locales/`),`Updated: ${v.data.updatedLocaleFiles.join(`, `)}`].join(`
|
|
2
2
|
`)}};exports.runAppTranslationsExtractCommand=u;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./style-BR52fK4V.cjs"),t=require("./format-app-duration-gu2oRLB4.cjs"),n=require("./run-app-operation-
|
|
1
|
+
const e=require("./style-BR52fK4V.cjs"),t=require("./format-app-duration-gu2oRLB4.cjs"),n=require("./run-app-operation-BLlHL5Nk.cjs");var r=async r=>{let{project:i,sdk:a,diagnostics:o,durationMilliseconds:s}=await n.n({context:r});return{data:{app:{path:i.path,name:i.name},sdk:{version:a.version},diagnostics:o,durationMilliseconds:s},human:e.o(`No type errors in ${i.name} ${e.i(`· project TypeScript · ${t.t(s)}`)}`)}};exports.runAppTypecheckCommand=r;
|