twenty-sdk 0.2.2 → 0.2.4
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/README.md +125 -39
- package/dist/cli.cjs +1 -1
- package/dist/cli.mjs +2 -2
- package/dist/vendor/twenty-shared/{ViewFilterOperandDeprecated-CHskkJ78.js → ViewFilterOperandDeprecated-6TjGsHvE.js} +1 -1
- package/dist/vendor/twenty-shared/{ViewFilterOperandDeprecated-5v-49Eq0.mjs → ViewFilterOperandDeprecated-DHNmFtYo.mjs} +1 -1
- package/dist/vendor/twenty-shared/application/roleManifestType.d.ts +0 -1
- package/dist/vendor/twenty-shared/application/roleManifestType.d.ts.map +1 -1
- package/dist/vendor/twenty-shared/isValidCountryCode-DNOavXY6.js +4 -0
- package/dist/vendor/twenty-shared/{isValidCountryCode-CJneDJKx.mjs → isValidCountryCode-QjE8dukS.mjs} +1430 -1363
- package/dist/vendor/twenty-shared/types/SettingsPath.d.ts +1 -1
- package/dist/vendor/twenty-shared/types/SettingsPath.d.ts.map +1 -1
- package/dist/vendor/twenty-shared/types/ViewFilterOperandDeprecated.d.ts +1 -2
- package/dist/vendor/twenty-shared/types/ViewFilterOperandDeprecated.d.ts.map +1 -1
- package/dist/vendor/twenty-shared/types.cjs +1 -1
- package/dist/vendor/twenty-shared/types.mjs +4 -4
- package/dist/vendor/twenty-shared/utils/evalFromContext.d.ts +2 -0
- package/dist/vendor/twenty-shared/utils/evalFromContext.d.ts.map +1 -0
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/addUnitToDateTime.d.ts.map +1 -1
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/getEndUnitOfDateTime.d.ts.map +1 -1
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/getStartUnitOfDateTime.d.ts.map +1 -1
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/relativeDateFilterSchema.d.ts +3 -0
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/relativeDateFilterSchema.d.ts.map +1 -1
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/relativeDateFilterStringifiedSchema.d.ts +1 -1
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/relativeDateFilterUnitSchema.d.ts +3 -0
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/relativeDateFilterUnitSchema.d.ts.map +1 -1
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/resolveRelativeDateFilter.d.ts +1 -1
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/resolveRelativeDateFilterStringified.d.ts +1 -1
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/resolveRelativeDateTimeFilter.d.ts +1 -1
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/resolveRelativeDateTimeFilterStringified.d.ts +1 -1
- package/dist/vendor/twenty-shared/utils/filter/dates/utils/subUnitFromDateTime.d.ts.map +1 -1
- package/dist/vendor/twenty-shared/utils/filter/utils/convert-view-filter-operand-to-core-operand.util.d.ts.map +1 -1
- package/dist/vendor/twenty-shared/utils/index.d.ts +2 -0
- package/dist/vendor/twenty-shared/utils/index.d.ts.map +1 -1
- package/dist/vendor/twenty-shared/utils/rich-text-variable-resolver.d.ts +2 -0
- package/dist/vendor/twenty-shared/utils/rich-text-variable-resolver.d.ts.map +1 -0
- package/dist/vendor/twenty-shared/utils/variable-resolver.d.ts.map +1 -1
- package/dist/vendor/twenty-shared/utils.cjs +3 -2
- package/dist/vendor/twenty-shared/utils.mjs +468 -450
- package/dist/vendor/twenty-shared/workflow.cjs +1 -1
- package/dist/vendor/twenty-shared/workflow.mjs +3 -3
- package/package.json +1 -1
- package/dist/vendor/twenty-shared/isValidCountryCode-DxXIdhne.js +0 -4
package/README.md
CHANGED
|
@@ -30,66 +30,152 @@ npm install twenty-sdk
|
|
|
30
30
|
yarn add twenty-sdk
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
##
|
|
34
|
-
You can either scaffold a new app or add the SDK to an existing one.
|
|
33
|
+
## Usage
|
|
35
34
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
```
|
|
36
|
+
Usage: twenty [options] [command]
|
|
37
|
+
|
|
38
|
+
CLI for Twenty application development
|
|
39
|
+
|
|
40
|
+
Options:
|
|
41
|
+
--workspace <name> Use a specific workspace configuration (default: "default")
|
|
42
|
+
-V, --version output the version number
|
|
43
|
+
-h, --help display help for command
|
|
44
|
+
|
|
45
|
+
Commands:
|
|
46
|
+
auth Authentication commands
|
|
47
|
+
app Application development commands
|
|
48
|
+
help [command] display help for command
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Global Options
|
|
52
|
+
|
|
53
|
+
- `--workspace <name>`: Use a specific workspace configuration profile. Defaults to `default`. See Configuration for details.
|
|
54
|
+
|
|
55
|
+
## Commands
|
|
56
|
+
|
|
57
|
+
### Auth
|
|
58
|
+
|
|
59
|
+
Authenticate the CLI against your Twenty workspace.
|
|
60
|
+
|
|
61
|
+
- `twenty auth login` — Authenticate with Twenty.
|
|
62
|
+
- Options:
|
|
63
|
+
- `--api-key <key>`: API key for authentication.
|
|
64
|
+
- `--api-url <url>`: Twenty API URL (defaults to your current profile's value or `http://localhost:3000`).
|
|
65
|
+
- Behavior: Prompts for any missing values, persists them to the active workspace profile, and validates the credentials.
|
|
66
|
+
|
|
67
|
+
- `twenty auth logout` — Remove authentication credentials for the active workspace profile.
|
|
68
|
+
|
|
69
|
+
- `twenty auth status` — Print the current authentication status (API URL, masked API key, validity).
|
|
70
|
+
|
|
71
|
+
Examples:
|
|
42
72
|
|
|
43
|
-
## CLI quickstart
|
|
44
73
|
```bash
|
|
45
|
-
#
|
|
74
|
+
# Login interactively (recommended)
|
|
46
75
|
twenty auth login
|
|
47
76
|
|
|
48
|
-
#
|
|
49
|
-
twenty
|
|
77
|
+
# Provide values in flags
|
|
78
|
+
twenty auth login --api-key $TWENTY_API_KEY --api-url https://api.twenty.com
|
|
50
79
|
|
|
51
|
-
#
|
|
52
|
-
twenty
|
|
80
|
+
# Login interactively for a specific workspace profile
|
|
81
|
+
twenty auth login --workspace my-custom-workspace
|
|
82
|
+
|
|
83
|
+
# Check status
|
|
84
|
+
twenty auth status
|
|
85
|
+
|
|
86
|
+
# Logout current profile
|
|
87
|
+
twenty auth logout
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### App
|
|
53
91
|
|
|
54
|
-
|
|
92
|
+
Application development commands.
|
|
93
|
+
|
|
94
|
+
- `twenty app sync [appPath]` — One-time sync of the application to your Twenty workspace.
|
|
95
|
+
- Behavior: Compute your application's manifest and send it to your workspace to sync your application
|
|
96
|
+
|
|
97
|
+
- `twenty app dev [appPath]` — Watch and sync local application changes.
|
|
98
|
+
- Options:
|
|
99
|
+
- `-d, --debounce <ms>`: Debounce delay in milliseconds (default: `1000`).
|
|
100
|
+
- Behavior: Performs an initial sync, then watches the directory for changes and re-syncs after debounced edits. Press Ctrl+C to stop.
|
|
101
|
+
|
|
102
|
+
- `twenty app uninstall [appPath]` — Uninstall the application from the current workspace.
|
|
103
|
+
- Note: `twenty app delete` exists as a hidden alias for backward compatibility.
|
|
104
|
+
|
|
105
|
+
- `twenty app add [entityType]` — Add a new entity to your application.
|
|
106
|
+
- Arguments:
|
|
107
|
+
- `entityType`: one of `function` or `object`. If omitted, an interactive prompt is shown.
|
|
108
|
+
- Options:
|
|
109
|
+
- `--path <path>`: The path where the entity file should be created (relative to the current directory).
|
|
110
|
+
- Behavior:
|
|
111
|
+
- `object`: prompts for singular/plural names and labels, then creates a new object definition file.
|
|
112
|
+
- `function`: prompts for a name and scaffolds a serverless function file.
|
|
113
|
+
|
|
114
|
+
- `twenty app generate [appPath]` — Generate the typed Twenty client for your application.
|
|
115
|
+
|
|
116
|
+
- `twenty app logs [appPath]` — Stream application function logs.
|
|
117
|
+
- Options:
|
|
118
|
+
- `-u, --functionUniversalIdentifier <id>`: Only show logs for a specific function universal ID.
|
|
119
|
+
- `-n, --functionName <name>`: Only show logs for a specific function name.
|
|
120
|
+
|
|
121
|
+
Examples:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Start dev mode with default debounce
|
|
55
125
|
twenty app dev
|
|
56
126
|
|
|
57
|
-
#
|
|
127
|
+
# Start dev mode with custom workspace profile
|
|
128
|
+
twenty app dev --workspace my-custom-workspace
|
|
129
|
+
|
|
130
|
+
# Dev mode with custom debounce
|
|
131
|
+
twenty app dev --debounce 1500
|
|
132
|
+
|
|
133
|
+
# One-time sync of the current directory
|
|
58
134
|
twenty app sync
|
|
59
135
|
|
|
60
|
-
#
|
|
61
|
-
twenty app
|
|
62
|
-
|
|
136
|
+
# Add a new object interactively
|
|
137
|
+
twenty app add
|
|
138
|
+
|
|
139
|
+
# Generate client types
|
|
140
|
+
twenty app generate
|
|
63
141
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
142
|
+
# Watch all function logs
|
|
143
|
+
twenty app logs
|
|
144
|
+
|
|
145
|
+
# Watch logs for a specific function by name
|
|
146
|
+
twenty app logs -n my-function
|
|
68
147
|
```
|
|
69
148
|
|
|
70
|
-
##
|
|
71
|
-
Applications are currently stored in [`twenty/packages/twenty-apps`](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps).
|
|
149
|
+
## Configuration
|
|
72
150
|
|
|
73
|
-
|
|
151
|
+
The CLI stores configuration per user in a JSON file:
|
|
74
152
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
153
|
+
- Location: `~/.twenty/config.json`
|
|
154
|
+
- Structure: Profiles keyed by workspace name. The active profile is selected with `--workspace <name>`.
|
|
155
|
+
|
|
156
|
+
Example configuration file:
|
|
79
157
|
|
|
80
|
-
|
|
81
|
-
|
|
158
|
+
```json
|
|
159
|
+
{
|
|
160
|
+
"profiles": {
|
|
161
|
+
"default": {
|
|
162
|
+
"apiUrl": "http://localhost:3000",
|
|
163
|
+
"apiKey": "<your-api-key>"
|
|
164
|
+
},
|
|
165
|
+
"prod": {
|
|
166
|
+
"apiUrl": "https://api.twenty.com",
|
|
167
|
+
"apiKey": "<your-api-key>"
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
82
171
|
```
|
|
83
172
|
|
|
84
|
-
|
|
85
|
-
- Commit your changes and open a pull request on https://github.com/twentyhq/twenty
|
|
173
|
+
Notes:
|
|
86
174
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
```
|
|
175
|
+
- If a profile is missing, `apiUrl` defaults to `http://localhost:3000` until set.
|
|
176
|
+
- `twenty auth login` writes the `apiUrl` and `apiKey` for the default profile.
|
|
177
|
+
- `twenty auth login --workspace custom-workspace` writes the `apiUrl` and `apiKey` for a custom `custom-workspace` profile.
|
|
91
178
|
|
|
92
|
-
Our team reviews contributions for quality, security, and reusability.
|
|
93
179
|
|
|
94
180
|
## Troubleshooting
|
|
95
181
|
- Auth errors: run `twenty auth login` again and ensure the API key has the required permissions.
|
package/dist/cli.cjs
CHANGED
|
@@ -285,4 +285,4 @@ export default class Twenty {
|
|
|
285
285
|
`;await Ge.appendFile(Oe.join(i,"index.ts"),r)}}const sc=async(n,i)=>{const r=_i.default.join(n,i);if(await Ge.pathExists(r))return r;throw new Error(`${i} not found in ${n}`)},Mv=({appPath:n,tsconfigPath:i="tsconfig.json"})=>{const r=L.readConfigFile(Oe.join(n,i),L.sys.readFile);if(r.error)throw new Error(L.formatDiagnosticsWithColorAndContext([r.error],{getCanonicalFileName:u=>u,getCurrentDirectory:L.sys.getCurrentDirectory,getNewLine:()=>L.sys.newLine}));const a=L.parseJsonConfigFileContent(r.config,L.sys,n);if(a.errors.length)throw new Error(L.formatDiagnosticsWithColorAndContext(a.errors,{getCanonicalFileName:u=>u,getCurrentDirectory:L.sys.getCurrentDirectory,getNewLine:()=>L.sys.newLine}));return L.createProgram(a.fileNames,a.options)},$v=async({appPath:n})=>{const i=Mv({appPath:n,tsconfigPath:"tsconfig.json"});return{diagnostics:[...i.getSyntacticDiagnostics(),...i.getSemanticDiagnostics(),...i.getGlobalDiagnostics()],program:i}};class co extends Error{constructor(i,r,a){super(i),this.parseErrors=r,this.filePath=a,this.name="JsoncParseError"}}const Bv=(n,i={})=>{const r=[],a=K0.parse(n,r,{allowTrailingComma:i.allowTrailingComma??!0,disallowComments:i.disallowComments??!1,allowEmptyContent:i.allowEmptyContent??!1});if(r.length>0){const u=r.map(p=>`Line ${p.offset}: ${p.error}`);throw new co(`JSONC parse errors:
|
|
286
286
|
${u.join(`
|
|
287
287
|
`)}`,r)}return a},Gv=async n=>await Ge.readFile(n,"utf8"),Wv=async(n,i={})=>{try{const r=await Ge.readFile(n,"utf8");return Bv(r,i)}catch(r){throw r instanceof co?new co(r.message,r.parseErrors,n):new Error(`Failed to read file ${n}: ${r}`)}},Vv=({diagnostics:n})=>{if(n.length>0){const i=L.formatDiagnosticsWithColorAndContext(n,{getCanonicalFileName:r=>r,getCurrentDirectory:L.sys.getCurrentDirectory,getNewLine:()=>L.sys.newLine});console.warn(i)}},vi=(n,i)=>{const r=n.expression;if(L.isCallExpression(r)){if(L.isIdentifier(r.expression))return r.expression.text===i;if(L.isPropertyAccessExpression(r.expression))return r.expression.name.text===i}return!1},dn=n=>{if(L.isStringLiteralLike(n))return n.text;if(L.isNumericLiteral(n))return Number(n.text);if(n.kind===L.SyntaxKind.TrueKeyword)return!0;if(n.kind===L.SyntaxKind.FalseKeyword)return!1;if(n.kind===L.SyntaxKind.NullKeyword)return null;if(L.isPropertyAccessExpression(n))return L.isIdentifier(n.expression)&&L.isIdentifier(n.name)?n.name.text:String(n.getText());if(L.isNoSubstitutionTemplateLiteral(n))return n.text;if(L.isTemplateExpression(n)){let i=n.head.text;for(const r of n.templateSpans){const a=dn(r.expression);i+=String(a)+r.literal.text}return i}if(L.isArrayLiteralExpression(n))return n.elements.map(i=>i.kind===L.SyntaxKind.SpreadElement?[]:dn(i));if(L.isObjectLiteralExpression(n)){const i={};for(const r of n.properties)if(L.isPropertyAssignment(r)){const a=L.isIdentifier(r.name)||L.isStringLiteralLike(r.name)?r.name.text:L.isComputedPropertyName(r.name)&&L.isStringLiteralLike(r.name.expression)?r.name.expression.text:void 0;a&&(i[a]=dn(r.initializer))}else L.isShorthandPropertyAssignment(r);return i}return L.isIdentifier(n)?n.text:String(n.getText?.()??"")},oc=n=>{if(!L.isCallExpression(n.expression))return;const[i]=n.expression.arguments;return i&&L.isObjectLiteralExpression(i)?dn(i):void 0},jv=n=>{const i=[];for(const r of n.getSourceFiles()){if(r.isDeclarationFile)continue;const a=u=>{if(L.isClassDeclaration(u)&&L.getDecorators(u)?.length){const y=L.getDecorators(u)?.find(_=>vi(_,"ObjectMetadata")||vi(_,"Object"));if(y){const _=oc(y);if(_&&typeof _=="object"&&!Array.isArray(_)){const N=[];for(const D of u.members){if(!L.isPropertyDeclaration(D))continue;const C=L.getDecorators(D)?.find(oe=>vi(oe,"FieldManifest")||vi(oe,"Field"));if(!C)continue;const J=oc(C);if(!J)continue;let Y;D.name&&L.isIdentifier(D.name)?Y=D.name.text:Y=D.name?.getText?.()??void 0,N.push({...J,...Y?{name:Y}:{}})}i.push({..._,fields:N})}}}L.forEachChild(u,a)};a(r)}return i},ac=n=>n.modifiers?.some(i=>i.kind===L.SyntaxKind.ExportKeyword)??!1,qv=n=>{const i=[];for(const _ of n.statements)if(!(!L.isVariableStatement(_)||!ac(_)))for(const N of _.declarationList.declarations){if(!L.isIdentifier(N.name))continue;const D=N.name.text,C=N.initializer??void 0;i.push({name:D,kind:"const",init:C,declNode:N})}for(const _ of n.statements)if(_.kind===L.SyntaxKind.FunctionDeclaration&&ac(_)){const N=_;N.name&&L.isIdentifier(N.name)&&i.push({name:N.name.text,kind:"function",init:void 0,declNode:N})}const r=Array.from(new Map(i.map(_=>[_.name,_])).values());if(r.length!==2)throw new Error(`Serverless file ${n.fileName} must export exactly 2 bindings (handler + config). Found: ${r.map(_=>_.name).join(", ")}`);const a=r.find(_=>_.name==="config");if(!a)throw new Error(`Serverless file ${n.fileName} must export a binding named "config".`);if(!a.init||!L.isObjectLiteralExpression(a.init))throw new Error(`"config" in ${n.fileName} must be initialized to an object literal.`);const u=a.declNode;if("type"in u&&u.type){const _=u.type.getText(n);if(!/\bFunctionConfig\b/.test(_))throw new Error(`"config" in ${n.fileName} must be typed as FunctionConfig (got: ${_}).`)}const p=dn(a.init),y=r.find(_=>_.name!=="config");if(!y)throw new Error(`Could not find the handler export in ${n.fileName}.`);if(y.kind==="const"){const _=y.init;if(!(!!_&&(L.isArrowFunction(_)||L.isFunctionExpression(_))))throw new Error(`Handler "${y.name}" in ${n.fileName} must be a function (arrow or function expression).`)}return{handlerName:y.name,configObject:p}},Jv=(n,i)=>Oe.relative(i,n).split(Oe.sep).join(Oe.posix.sep),Qv=(n,i)=>{const r=[];for(const a of n.getSourceFiles())if(!a.isDeclarationFile)try{const{handlerName:u,configObject:p}=qv(a),y=Jv(a.fileName,i);r.push({...p,handlerPath:y,handlerName:u})}catch{continue}return r},zv=(n,i,r)=>{let a=n;for(let u=0;u<i.length;u++){const p=i[u];u===i.length-1?a[p]=r:(a[p]=a[p]??{},a=a[p])}},Yv=async(n,i)=>{const r={};for(const a of n.getSourceFiles()){const u=a.fileName;if(a.isDeclarationFile||!u.startsWith(i+Oe.sep)&&u!==i||!(u.endsWith(".ts")||u.endsWith(".tsx"))||u.includes(`${Oe.sep}node_modules${Oe.sep}`))continue;const y=Oe.relative(i,u).split(Oe.sep),_=await Ge.readFile(u,"utf8");zv(r,y,_)}return r},Hv=n=>{for(const i of n.getSourceFiles()){if(i.isDeclarationFile||!i.fileName.endsWith("application.config.ts"))continue;let r;const a=u=>{if(L.isExportAssignment(u)&&L.isIdentifier(u.expression)){const p=u.expression.text;for(const y of i.statements)if(L.isVariableStatement(y))for(const _ of y.declarationList.declarations)L.isIdentifier(_.name)&&_.name.text===p&&_.initializer&&L.isObjectLiteralExpression(_.initializer)&&(r=dn(_.initializer))}r||L.forEachChild(u,a)};if(a(i),r)return r}throw new Error("Could not find default exported ApplicationConfig")},Kv=n=>{for(const i of n.getSourceFiles()){if(i.isDeclarationFile)continue;let r=!1;const a=u=>{if(!r){if(L.isImportDeclaration(u)){const p=u.moduleSpecifier;if(L.isStringLiteralLike(p)){const y=p.text;if((y===uo||y.endsWith(`/${uo}`))&&u.importClause){r=!0;return}}}L.forEachChild(u,a)}};if(a(i),r)return!0}return!1},Xv=n=>{const i=[];for(const r of n.getSourceFiles())if(!r.isDeclarationFile){for(const a of r.statements)if(!(!L.isVariableStatement(a)||!(a.modifiers?.some(p=>p.kind===L.SyntaxKind.ExportKeyword)??!1)))for(const p of a.declarationList.declarations){if(!L.isIdentifier(p.name)||!(p.type?.getText(r)??"").includes("RoleConfig"))continue;const _=p.initializer;!_||!L.isObjectLiteralExpression(_)||i.push(dn(_))}}return i},mr=async n=>{const i=await Wv(await sc(n,"package.json")),r=await Gv(await sc(n,"yarn.lock")),{diagnostics:a,program:u}=await $v({appPath:n});Vv({diagnostics:a});const[p,y,_,N,D]=[jv(u),Qv(u,n),Hv(u),Xv(u),await Yv(u,n)],C=Kv(u);return{packageJson:i,yarnLock:r,manifest:{application:_,objects:p,serverlessFunctions:y,roles:N,sources:D},shouldGenerate:C}};class Zv{constructor(){this.apiService=new Wn}async execute({appPath:i=mn,askForConfirmation:r}){try{console.log($.default.blue("🚀 Uninstall Twenty Application")),console.log($.default.gray(`📁 App Path: ${i}`)),console.log(""),r&&!await this.confirmationPrompt()&&(console.error($.default.red("⛔️ Aborting uninstall")),process.exit(1));const{manifest:a}=await mr(i),u=await this.apiService.uninstallApplication(a.application.universalIdentifier);return u.success===!1?console.error($.default.red("❌ Uninstall failed:"),u.error):console.log($.default.green("✅ Application uninstalled successfully")),u}catch(a){throw console.error($.default.red("Uninstall failed:"),a instanceof Error?a.message:a),a}}async confirmationPrompt(){const{confirmation:i}=await Pn.default.prompt([{type:"confirm",name:"confirmation",message:"Are you sure you want to uninstall this application?",default:!1}]);return i}}class e_{constructor(){this.apiService=new Wn}async execute(i){try{const r=i.appPath??mn,a=parseInt(i.debounce,10);this.logStartupInfo(r,a),await this.synchronize(r);const u=this.setupFileWatcher(r,a);this.setupGracefulShutdown(u)}catch(r){console.error($.default.red("Development mode failed:"),r instanceof Error?r.message:r),process.exit(1)}}async synchronize(i){const{manifest:r,packageJson:a,yarnLock:u}=await mr(i);await this.apiService.syncApplication({manifest:r,packageJson:a,yarnLock:u})}logStartupInfo(i,r){console.log($.default.blue("🚀 Starting Twenty Application Development Mode")),console.log($.default.gray(`📁 App Path: ${i}`)),console.log($.default.gray(`⏱️ Debounce: ${r}ms`)),console.log("")}setupFileWatcher(i,r){const a=ty.watch(i,{ignored:/node_modules|\.git/,persistent:!0});let u=null;const p=()=>{u&&clearTimeout(u),u=setTimeout(async()=>{console.log($.default.blue("🔄 Changes detected, syncing...")),await this.synchronize(i),console.log($.default.gray("👀 Watching for changes... (Press Ctrl+C to stop)"))},r)};return a.on("change",()=>{p()}),console.log($.default.gray("👀 Watching for changes... (Press Ctrl+C to stop)")),a}setupGracefulShutdown(i){process.on("SIGINT",()=>{console.log($.default.yellow(`
|
|
288
|
-
🛑 Stopping development mode...`)),i.close(),process.exit(0)})}}class t_{constructor(){this.apiService=new Wn,this.generateService=new Qc}async execute(i=mn){try{return console.log($.default.blue("🚀 Syncing Twenty Application")),console.log($.default.gray(`📁 App Path: ${i}`)),console.log(""),await this.synchronize({appPath:i})}catch(r){throw console.error($.default.red("Sync failed:"),r instanceof Error?r.message:r),r}}async synchronize({appPath:i}){const{manifest:r,packageJson:a,yarnLock:u,shouldGenerate:p}=await mr(i);let y=await this.apiService.syncApplication({manifest:r,packageJson:a,yarnLock:u});if(p){await this.generateService.generateClient(i);const{manifest:_}=await mr(i);y=await this.apiService.syncApplication({manifest:_,packageJson:a,yarnLock:u})}return y.success===!1?console.error($.default.red("❌ Serverless functions Sync failed:"),y.error):console.log($.default.green("✅ Serverless functions synced successfully")),y}}const kn=n=>n&&!n?.startsWith("/")?Oe.join(mn,n):n;class n_{constructor(){this.generateService=new Qc}async execute(i=mn){try{await this.generateService.generateClient(i)}catch(r){throw console.error($.default.red("Generate Twenty client failed:"),r instanceof Error?r.message:r),r}}}class r_{constructor(){this.apiService=new Wn}async execute({appPath:i=mn,functionUniversalIdentifier:r,functionName:a}){try{const{manifest:u}=await mr(i);this.logWatchInfo({appName:u.application.displayName,functionUniversalIdentifier:r,functionName:a}),await this.apiService.subscribeToLogs({applicationUniversalIdentifier:u.application.universalIdentifier,functionUniversalIdentifier:r,functionName:a})}catch(u){console.error($.default.red("Watch logs failed:"),u instanceof Error?u.message:u),process.exit(1)}}logWatchInfo({appName:i,functionUniversalIdentifier:r,functionName:a}){const u=i??"Twenty Application",p=r||a?`function "${r||a}"`:"functions";console.log($.default.blue(`🚀 Watching ${u} ${p} logs:`)),console.log("")}}class i_{constructor(){this.devCommand=new e_,this.syncCommand=new t_,this.uninstallCommand=new Zv,this.addCommand=new uy,this.generateCommand=new n_,this.logsCommand=new r_}getCommand(){const i=new xi.Command("app");return i.description("Application development commands"),i.command("dev [appPath]").description("Watch and sync local application changes").option("-d, --debounce <ms>","Debounce delay in milliseconds","1000").action(async(r,a)=>{await this.devCommand.execute({...a,appPath:kn(r)})}),i.command("sync [appPath]").description("Sync application to Twenty").action(async r=>{try{(await this.syncCommand.execute(kn(r))).success||process.exit(1)}catch{process.exit(1)}}),i.command("uninstall [appPath]").description("Uninstall application from Twenty").action(async r=>{try{(await this.uninstallCommand.execute({appPath:kn(r),askForConfirmation:!0})).success||process.exit(1)}catch{process.exit(1)}}),i.command("delete [appPath]",{hidden:!0}).description("Delete application from Twenty").action(async r=>{try{(await this.uninstallCommand.execute({appPath:kn(r),askForConfirmation:!0})).success||process.exit(1)}catch{process.exit(1)}}),i.command("add [entityType]").option("--path <path>","Path in which the entity should be created.").description(`Add a new entity to your application (${Object.values(wi).join("|")})`).action(async(r,a)=>{r&&!ay(r)&&(console.error($.default.red(`Invalid entity type "${r}". Must be one of: ${Object.values(wi).join("|")}`)),process.exit(1)),await this.addCommand.execute(r,a?.path)}),i.command("generate [
|
|
288
|
+
🛑 Stopping development mode...`)),i.close(),process.exit(0)})}}class t_{constructor(){this.apiService=new Wn,this.generateService=new Qc}async execute(i=mn){try{return console.log($.default.blue("🚀 Syncing Twenty Application")),console.log($.default.gray(`📁 App Path: ${i}`)),console.log(""),await this.synchronize({appPath:i})}catch(r){throw console.error($.default.red("Sync failed:"),r instanceof Error?r.message:r),r}}async synchronize({appPath:i}){const{manifest:r,packageJson:a,yarnLock:u,shouldGenerate:p}=await mr(i);let y=await this.apiService.syncApplication({manifest:r,packageJson:a,yarnLock:u});if(p){await this.generateService.generateClient(i);const{manifest:_}=await mr(i);y=await this.apiService.syncApplication({manifest:_,packageJson:a,yarnLock:u})}return y.success===!1?console.error($.default.red("❌ Serverless functions Sync failed:"),y.error):console.log($.default.green("✅ Serverless functions synced successfully")),y}}const kn=n=>n&&!n?.startsWith("/")?Oe.join(mn,n):n;class n_{constructor(){this.generateService=new Qc}async execute(i=mn){try{await this.generateService.generateClient(i)}catch(r){throw console.error($.default.red("Generate Twenty client failed:"),r instanceof Error?r.message:r),r}}}class r_{constructor(){this.apiService=new Wn}async execute({appPath:i=mn,functionUniversalIdentifier:r,functionName:a}){try{const{manifest:u}=await mr(i);this.logWatchInfo({appName:u.application.displayName,functionUniversalIdentifier:r,functionName:a}),await this.apiService.subscribeToLogs({applicationUniversalIdentifier:u.application.universalIdentifier,functionUniversalIdentifier:r,functionName:a})}catch(u){console.error($.default.red("Watch logs failed:"),u instanceof Error?u.message:u),process.exit(1)}}logWatchInfo({appName:i,functionUniversalIdentifier:r,functionName:a}){const u=i??"Twenty Application",p=r||a?`function "${r||a}"`:"functions";console.log($.default.blue(`🚀 Watching ${u} ${p} logs:`)),console.log("")}}class i_{constructor(){this.devCommand=new e_,this.syncCommand=new t_,this.uninstallCommand=new Zv,this.addCommand=new uy,this.generateCommand=new n_,this.logsCommand=new r_}getCommand(){const i=new xi.Command("app");return i.description("Application development commands"),i.command("dev [appPath]").description("Watch and sync local application changes").option("-d, --debounce <ms>","Debounce delay in milliseconds","1000").action(async(r,a)=>{await this.devCommand.execute({...a,appPath:kn(r)})}),i.command("sync [appPath]").description("Sync application to Twenty").action(async r=>{try{(await this.syncCommand.execute(kn(r))).success||process.exit(1)}catch{process.exit(1)}}),i.command("uninstall [appPath]").description("Uninstall application from Twenty").action(async r=>{try{(await this.uninstallCommand.execute({appPath:kn(r),askForConfirmation:!0})).success||process.exit(1)}catch{process.exit(1)}}),i.command("delete [appPath]",{hidden:!0}).description("Delete application from Twenty").action(async r=>{try{(await this.uninstallCommand.execute({appPath:kn(r),askForConfirmation:!0})).success||process.exit(1)}catch{process.exit(1)}}),i.command("add [entityType]").option("--path <path>","Path in which the entity should be created.").description(`Add a new entity to your application (${Object.values(wi).join("|")})`).action(async(r,a)=>{r&&!ay(r)&&(console.error($.default.red(`Invalid entity type "${r}". Must be one of: ${Object.values(wi).join("|")}`)),process.exit(1)),await this.addCommand.execute(r,a?.path)}),i.command("generate [appPath]").description("Generate Twenty client").action(async r=>{await this.generateCommand.execute(kn(r))}),i.command("logs [appPath]").option("-u, --functionUniversalIdentifier <functionUniversalIdentifier>","Only show logs for the function with this universal ID").option("-n, --functionName <functionName>","Only show logs for the function with this name").description("Watch application function logs").action(async(r,a)=>{await this.logsCommand.execute({...a,appPath:kn(r)})}),i}}class s_{constructor(){this.configService=new At,this.apiService=new Wn}getCommand(){const i=new xi.Command("auth");return i.description("Authentication commands"),i.command("login").description("Authenticate with Twenty").option("--api-key <key>","API key for authentication").option("--api-url <url>","Twenty API URL").action(async r=>{await this.login(r)}),i.command("logout").description("Remove authentication credentials").action(async()=>{await this.logout()}),i.command("status").description("Check authentication status").action(async()=>{await this.status()}),i}async login(i){try{let{apiKey:r,apiUrl:a}=i;const u=await this.configService.getConfig();if(a||(a=(await Pn.default.prompt([{type:"input",name:"apiUrl",message:"Twenty API URL:",default:u.apiUrl,validate:_=>{try{return new URL(_),!0}catch{return"Please enter a valid URL"}}}])).apiUrl),r||(r=(await Pn.default.prompt([{type:"password",name:"apiKey",message:"API Key:",mask:"*",validate:_=>_.length>0||"API key is required"}])).apiKey),await this.configService.setConfig({apiUrl:a,apiKey:r}),await this.apiService.validateAuth()){const y=At.getActiveWorkspace();console.log($.default.green(`✓ Successfully authenticated with Twenty (workspace: ${y})`))}else console.log($.default.red("✗ Authentication failed. Please check your credentials.")),process.exit(1)}catch(r){console.error($.default.red("Login failed:"),r instanceof Error?r.message:r),process.exit(1)}}async logout(){try{await this.configService.clearConfig();const i=At.getActiveWorkspace();console.log($.default.green(`✓ Successfully logged out (workspace: ${i})`))}catch(i){console.error($.default.red("Logout failed:"),i instanceof Error?i.message:i),process.exit(1)}}async status(){try{const i=At.getActiveWorkspace(),r=await this.configService.getConfig();if(console.log($.default.blue("Authentication Status:")),console.log(`Workspace: ${i}`),console.log(`API URL: ${r.apiUrl}`),console.log(`API Key: ${r.apiKey?"***"+r.apiKey.slice(-4):"Not set"}`),r.apiKey){const a=await this.apiService.validateAuth();console.log(`Status: ${a?$.default.green("✓ Valid"):$.default.red("✗ Invalid")}`)}else console.log(`Status: ${$.default.yellow("⚠ Not authenticated")}`)}catch(i){console.error($.default.red("Status check failed:"),i instanceof Error?i.message:i),process.exit(1)}}}const o_="0.2.4",a_={version:o_},vn=new xi.Command;vn.name("twenty").description("CLI for Twenty application development").version(a_.version);vn.option("--workspace <name>","Use a specific workspace configuration","default");vn.hook("preAction",n=>{const r=(n.optsWithGlobals?n.optsWithGlobals():n.opts()).workspace;At.setActiveWorkspace(r),console.log($.default.gray(`👩💻 Workspace - ${At.getActiveWorkspace()}`))});vn.addCommand(new s_().getCommand());vn.addCommand(new i_().getCommand());vn.exitOverride();try{vn.parse()}catch(n){n instanceof xi.CommanderError&&process.exit(n.exitCode),n instanceof Error&&(console.error($.default.red("Error:"),n.message),process.exit(1))}
|
package/dist/cli.mjs
CHANGED
|
@@ -9523,7 +9523,7 @@ class I_ {
|
|
|
9523
9523
|
r,
|
|
9524
9524
|
a?.path
|
|
9525
9525
|
);
|
|
9526
|
-
}), i.command("generate [
|
|
9526
|
+
}), i.command("generate [appPath]").description("Generate Twenty client").action(async (r) => {
|
|
9527
9527
|
await this.generateCommand.execute(Pt(r));
|
|
9528
9528
|
}), i.command("logs [appPath]").option(
|
|
9529
9529
|
"-u, --functionUniversalIdentifier <functionUniversalIdentifier>",
|
|
@@ -9638,7 +9638,7 @@ class S_ {
|
|
|
9638
9638
|
}
|
|
9639
9639
|
}
|
|
9640
9640
|
}
|
|
9641
|
-
const b_ = "0.2.
|
|
9641
|
+
const b_ = "0.2.4", O_ = {
|
|
9642
9642
|
version: b_
|
|
9643
9643
|
}, Tt = new go();
|
|
9644
9644
|
Tt.name("twenty").description("CLI for Twenty application development").version(O_.version);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var _=(I=>(I.MONDAY="MONDAY",I.SUNDAY="SUNDAY",I.SATURDAY="SATURDAY",I))(_||{}),T=(I=>(I.IS="IS",I.IS_NOT_NULL="IS_NOT_NULL",I.IS_NOT="IS_NOT",I.LESS_THAN_OR_EQUAL="LESS_THAN_OR_EQUAL",I.GREATER_THAN_OR_EQUAL="GREATER_THAN_OR_EQUAL",I.IS_BEFORE="IS_BEFORE",I.IS_AFTER="IS_AFTER",I.CONTAINS="CONTAINS",I.DOES_NOT_CONTAIN="DOES_NOT_CONTAIN",I.IS_EMPTY="IS_EMPTY",I.IS_NOT_EMPTY="IS_NOT_EMPTY",I.IS_RELATIVE="IS_RELATIVE",I.IS_IN_PAST="IS_IN_PAST",I.IS_IN_FUTURE="IS_IN_FUTURE",I.IS_TODAY="IS_TODAY",I.VECTOR_SEARCH="VECTOR_SEARCH",I))(T||{}),N=(I=>(I.Is="is",I.IsNotNull="isNotNull",I.IsNot="isNot",I.LessThanOrEqual="lessThan",I.GreaterThanOrEqual="greaterThan",I.IsBefore="isBefore",I.IsAfter="isAfter",I.Contains="contains",I.DoesNotContain="doesNotContain",I.IsEmpty="isEmpty",I.IsNotEmpty="isNotEmpty",I.IsRelative="isRelative",I.IsInPast="isInPast",I.IsInFuture="isInFuture",I.IsToday="isToday",I
|
|
1
|
+
"use strict";var _=(I=>(I.MONDAY="MONDAY",I.SUNDAY="SUNDAY",I.SATURDAY="SATURDAY",I))(_||{}),T=(I=>(I.IS="IS",I.IS_NOT_NULL="IS_NOT_NULL",I.IS_NOT="IS_NOT",I.LESS_THAN_OR_EQUAL="LESS_THAN_OR_EQUAL",I.GREATER_THAN_OR_EQUAL="GREATER_THAN_OR_EQUAL",I.IS_BEFORE="IS_BEFORE",I.IS_AFTER="IS_AFTER",I.CONTAINS="CONTAINS",I.DOES_NOT_CONTAIN="DOES_NOT_CONTAIN",I.IS_EMPTY="IS_EMPTY",I.IS_NOT_EMPTY="IS_NOT_EMPTY",I.IS_RELATIVE="IS_RELATIVE",I.IS_IN_PAST="IS_IN_PAST",I.IS_IN_FUTURE="IS_IN_FUTURE",I.IS_TODAY="IS_TODAY",I.VECTOR_SEARCH="VECTOR_SEARCH",I))(T||{}),N=(I=>(I.Is="is",I.IsNotNull="isNotNull",I.IsNot="isNot",I.LessThanOrEqual="lessThan",I.GreaterThanOrEqual="greaterThan",I.IsBefore="isBefore",I.IsAfter="isAfter",I.Contains="contains",I.DoesNotContain="doesNotContain",I.IsEmpty="isEmpty",I.IsNotEmpty="isNotEmpty",I.IsRelative="isRelative",I.IsInPast="isInPast",I.IsInFuture="isInFuture",I.IsToday="isToday",I))(N||{});exports.FirstDayOfTheWeek=_;exports.ViewFilterOperand=T;exports.ViewFilterOperandDeprecated=N;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _ = /* @__PURE__ */ ((I) => (I.MONDAY = "MONDAY", I.SUNDAY = "SUNDAY", I.SATURDAY = "SATURDAY", I))(_ || {}), N = /* @__PURE__ */ ((I) => (I.IS = "IS", I.IS_NOT_NULL = "IS_NOT_NULL", I.IS_NOT = "IS_NOT", I.LESS_THAN_OR_EQUAL = "LESS_THAN_OR_EQUAL", I.GREATER_THAN_OR_EQUAL = "GREATER_THAN_OR_EQUAL", I.IS_BEFORE = "IS_BEFORE", I.IS_AFTER = "IS_AFTER", I.CONTAINS = "CONTAINS", I.DOES_NOT_CONTAIN = "DOES_NOT_CONTAIN", I.IS_EMPTY = "IS_EMPTY", I.IS_NOT_EMPTY = "IS_NOT_EMPTY", I.IS_RELATIVE = "IS_RELATIVE", I.IS_IN_PAST = "IS_IN_PAST", I.IS_IN_FUTURE = "IS_IN_FUTURE", I.IS_TODAY = "IS_TODAY", I.VECTOR_SEARCH = "VECTOR_SEARCH", I))(N || {}), T = /* @__PURE__ */ ((I) => (I.Is = "is", I.IsNotNull = "isNotNull", I.IsNot = "isNot", I.LessThanOrEqual = "lessThan", I.GreaterThanOrEqual = "greaterThan", I.IsBefore = "isBefore", I.IsAfter = "isAfter", I.Contains = "contains", I.DoesNotContain = "doesNotContain", I.IsEmpty = "isEmpty", I.IsNotEmpty = "isNotEmpty", I.IsRelative = "isRelative", I.IsInPast = "isInPast", I.IsInFuture = "isInFuture", I.IsToday = "isToday", I
|
|
1
|
+
var _ = /* @__PURE__ */ ((I) => (I.MONDAY = "MONDAY", I.SUNDAY = "SUNDAY", I.SATURDAY = "SATURDAY", I))(_ || {}), N = /* @__PURE__ */ ((I) => (I.IS = "IS", I.IS_NOT_NULL = "IS_NOT_NULL", I.IS_NOT = "IS_NOT", I.LESS_THAN_OR_EQUAL = "LESS_THAN_OR_EQUAL", I.GREATER_THAN_OR_EQUAL = "GREATER_THAN_OR_EQUAL", I.IS_BEFORE = "IS_BEFORE", I.IS_AFTER = "IS_AFTER", I.CONTAINS = "CONTAINS", I.DOES_NOT_CONTAIN = "DOES_NOT_CONTAIN", I.IS_EMPTY = "IS_EMPTY", I.IS_NOT_EMPTY = "IS_NOT_EMPTY", I.IS_RELATIVE = "IS_RELATIVE", I.IS_IN_PAST = "IS_IN_PAST", I.IS_IN_FUTURE = "IS_IN_FUTURE", I.IS_TODAY = "IS_TODAY", I.VECTOR_SEARCH = "VECTOR_SEARCH", I))(N || {}), T = /* @__PURE__ */ ((I) => (I.Is = "is", I.IsNotNull = "isNotNull", I.IsNot = "isNot", I.LessThanOrEqual = "lessThan", I.GreaterThanOrEqual = "greaterThan", I.IsBefore = "isBefore", I.IsAfter = "isAfter", I.Contains = "contains", I.DoesNotContain = "doesNotContain", I.IsEmpty = "isEmpty", I.IsNotEmpty = "isNotEmpty", I.IsRelative = "isRelative", I.IsInPast = "isInPast", I.IsInFuture = "isInFuture", I.IsToday = "isToday", I))(T || {});
|
|
2
2
|
export {
|
|
3
3
|
_ as F,
|
|
4
4
|
N as V,
|
|
@@ -42,7 +42,6 @@ export type RoleManifest = SyncableEntityOptions & {
|
|
|
42
42
|
canBeAssignedToUsers?: boolean;
|
|
43
43
|
canBeAssignedToAgents?: boolean;
|
|
44
44
|
canBeAssignedToApiKeys?: boolean;
|
|
45
|
-
canBeAssignedToApplications?: boolean;
|
|
46
45
|
objectPermissions?: ObjectPermission[];
|
|
47
46
|
fieldPermissions?: FieldPermission[];
|
|
48
47
|
permissionFlags?: PermissionFlagType[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roleManifestType.d.ts","sourceRoot":"","sources":["../../src/application/roleManifestType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAErF,KAAK,oBAAoB,GAAG;IAC1B,yBAAyB,EAAE,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,KAAK,CAAC;CAC5B,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,KAAK,CAAC;CACnC,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,KAAK,gBAAgB,GACjB,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,GAC7C,CAAC,oBAAoB,GAAG,cAAc,CAAC,CAAC;AAE5C,KAAK,mBAAmB,GAAG;IACzB,wBAAwB,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,KAAK,CAAC;CACnB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB,CAAC,EAAE,KAAK,CAAC;CAClC,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,KAAK,eAAe,GAChB,CAAC,mBAAmB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC,GAClE,CAAC,mBAAmB,GAAG,oBAAoB,GAAG,aAAa,CAAC,GAC5D,CAAC,mBAAmB,GAAG,cAAc,GAAG,mBAAmB,CAAC,GAC5D,CAAC,mBAAmB,GAAG,cAAc,GAAG,aAAa,CAAC,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG,qBAAqB,GAAG;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,
|
|
1
|
+
{"version":3,"file":"roleManifestType.d.ts","sourceRoot":"","sources":["../../src/application/roleManifestType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAErF,KAAK,oBAAoB,GAAG;IAC1B,yBAAyB,EAAE,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,KAAK,CAAC;CAC5B,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,KAAK,CAAC;CACnC,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,KAAK,gBAAgB,GACjB,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,GAC7C,CAAC,oBAAoB,GAAG,cAAc,CAAC,CAAC;AAE5C,KAAK,mBAAmB,GAAG;IACzB,wBAAwB,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,KAAK,CAAC;CACnB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB,CAAC,EAAE,KAAK,CAAC;CAClC,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,KAAK,eAAe,GAChB,CAAC,mBAAmB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC,GAClE,CAAC,mBAAmB,GAAG,oBAAoB,GAAG,aAAa,CAAC,GAC5D,CAAC,mBAAmB,GAAG,cAAc,GAAG,mBAAmB,CAAC,GAC5D,CAAC,mBAAmB,GAAG,cAAc,GAAG,aAAa,CAAC,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG,qBAAqB,GAAG;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,eAAe,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACxC,CAAC"}
|