@appsemble/cli 0.36.10-test.2 → 0.36.10-test.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 +3 -3
- package/commands/serve.js +5 -2
- package/lib/app.js +28 -19
- package/package.json +7 -7
- package/templates/apps/empty/app-definition.yaml +2 -2
- package/templates/blocks/mini-jsx/package.json +1 -1
- package/templates/blocks/preact/package.json +2 -2
- package/templates/blocks/vanilla/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
#  Appsemble CLI
|
|
2
2
|
|
|
3
3
|
> Manage apps and blocks from the command line.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@appsemble/cli)
|
|
6
|
-
[](https://gitlab.com/appsemble/appsemble/-/releases/0.36.10-test.4)
|
|
7
7
|
[](https://prettier.io)
|
|
8
8
|
|
|
9
9
|
## Table of Contents
|
|
@@ -342,5 +342,5 @@ appsemble run-cronjobs --interval 30
|
|
|
342
342
|
|
|
343
343
|
## License
|
|
344
344
|
|
|
345
|
-
[LGPL-3.0-only](https://gitlab.com/appsemble/appsemble/-/blob/0.36.10-test.
|
|
345
|
+
[LGPL-3.0-only](https://gitlab.com/appsemble/appsemble/-/blob/0.36.10-test.4/LICENSE.md) ©
|
|
346
346
|
[Appsemble](https://appsemble.com)
|
package/commands/serve.js
CHANGED
|
@@ -66,16 +66,19 @@ export async function handler(argv) {
|
|
|
66
66
|
: new AppsembleError('This app does not support roles');
|
|
67
67
|
}
|
|
68
68
|
const appSecurity = appsembleApp.definition.security;
|
|
69
|
+
const appMemberRole = passedUserRole || appSecurity?.default?.role;
|
|
69
70
|
const appMemberInfo = {
|
|
70
71
|
sub: '1',
|
|
71
72
|
name: 'dev',
|
|
72
73
|
email: 'dev@example.com',
|
|
73
74
|
email_verified: true,
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
...(appMemberRole ? { role: appMemberRole } : {}),
|
|
76
|
+
roles: appMemberRole ? [appMemberRole] : [],
|
|
76
77
|
demo: false,
|
|
77
78
|
zoneinfo: '',
|
|
78
79
|
properties: {},
|
|
80
|
+
$seed: false,
|
|
81
|
+
$ephemeral: false,
|
|
79
82
|
};
|
|
80
83
|
const appMembers = [appMemberInfo];
|
|
81
84
|
const allowedGroupRoles = ['manager', 'member'];
|
package/lib/app.js
CHANGED
|
@@ -27,7 +27,7 @@ import { publishResourcesRecursively } from './resource.js';
|
|
|
27
27
|
*/
|
|
28
28
|
export async function traverseAppDirectory(path, context, formData) {
|
|
29
29
|
let rc;
|
|
30
|
-
let discoveredContext;
|
|
30
|
+
let discoveredContext = {};
|
|
31
31
|
let yaml;
|
|
32
32
|
let iconPath;
|
|
33
33
|
let maskableIconPath;
|
|
@@ -142,18 +142,15 @@ export async function traverseAppDirectory(path, context, formData) {
|
|
|
142
142
|
break;
|
|
143
143
|
}
|
|
144
144
|
});
|
|
145
|
-
// @ts-expect-error 2454 Variable used before it was assigned
|
|
146
145
|
if (yaml === undefined) {
|
|
147
146
|
throw new AppsembleError('No app definition found');
|
|
148
147
|
}
|
|
149
|
-
discoveredContext
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
discoveredContext.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
discoveredContext.maskableIcon = discoveredContext.maskableIcon ? resolve(path, discoveredContext.maskableIcon) : maskableIconPath;
|
|
156
|
-
// @ts-expect-error 2454 Variable used before it was assigned
|
|
148
|
+
discoveredContext.icon = discoveredContext.icon
|
|
149
|
+
? resolve(path, discoveredContext.icon)
|
|
150
|
+
: iconPath;
|
|
151
|
+
discoveredContext.maskableIcon = discoveredContext.maskableIcon
|
|
152
|
+
? resolve(path, discoveredContext.maskableIcon)
|
|
153
|
+
: maskableIconPath;
|
|
157
154
|
return [discoveredContext, rc, yaml, gatheredData];
|
|
158
155
|
}
|
|
159
156
|
function extractFilenameFromContentDisposition(contentDisposition) {
|
|
@@ -165,7 +162,7 @@ function extractFilenameFromContentDisposition(contentDisposition) {
|
|
|
165
162
|
}
|
|
166
163
|
async function retrieveContext(path, context) {
|
|
167
164
|
let rc;
|
|
168
|
-
let discoveredContext;
|
|
165
|
+
let discoveredContext = {};
|
|
169
166
|
let iconPath;
|
|
170
167
|
let maskableIconPath;
|
|
171
168
|
await opendirSafe(path, async (filepath, filestat) => {
|
|
@@ -189,13 +186,12 @@ async function retrieveContext(path, context) {
|
|
|
189
186
|
break;
|
|
190
187
|
}
|
|
191
188
|
});
|
|
192
|
-
discoveredContext
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
discoveredContext.
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
discoveredContext.maskableIcon = discoveredContext.maskableIcon ? resolve(path, discoveredContext.maskableIcon) : maskableIconPath;
|
|
189
|
+
discoveredContext.icon = discoveredContext.icon
|
|
190
|
+
? resolve(path, discoveredContext.icon)
|
|
191
|
+
: iconPath;
|
|
192
|
+
discoveredContext.maskableIcon = discoveredContext.maskableIcon
|
|
193
|
+
? resolve(path, discoveredContext.maskableIcon)
|
|
194
|
+
: maskableIconPath;
|
|
199
195
|
return discoveredContext;
|
|
200
196
|
}
|
|
201
197
|
/**
|
|
@@ -329,6 +325,15 @@ export async function publishSeedResources(path, app, remote) {
|
|
|
329
325
|
logger.warn(`Missing resources directory in ${path}. Skipping...`);
|
|
330
326
|
}
|
|
331
327
|
}
|
|
328
|
+
function normalizeSeedAppMemberRoles(roles, role) {
|
|
329
|
+
return Array.from(new Set((Array.isArray(roles) ? roles : roles ? [roles] : role ? [role] : []).filter(Boolean)));
|
|
330
|
+
}
|
|
331
|
+
function normalizeSeedAppMembers(members) {
|
|
332
|
+
return members.map(({ role, roles, ...member }) => ({
|
|
333
|
+
...member,
|
|
334
|
+
roles: normalizeSeedAppMemberRoles(roles, role),
|
|
335
|
+
}));
|
|
336
|
+
}
|
|
332
337
|
export async function publishSeedAppMembers(path, app, remote) {
|
|
333
338
|
const membersPath = join(path, 'members', 'index.json');
|
|
334
339
|
logger.info(`Publishing seed app members from ${membersPath}`);
|
|
@@ -339,7 +344,7 @@ export async function publishSeedAppMembers(path, app, remote) {
|
|
|
339
344
|
baseURL: remote,
|
|
340
345
|
});
|
|
341
346
|
const membersContent = await readFile(membersPath, 'utf8');
|
|
342
|
-
const members = JSON.parse(membersContent);
|
|
347
|
+
const members = normalizeSeedAppMembers(JSON.parse(membersContent));
|
|
343
348
|
await axios({
|
|
344
349
|
url: `/api/apps/${app.id}/demo-members`,
|
|
345
350
|
baseURL: remote,
|
|
@@ -350,8 +355,12 @@ export async function publishSeedAppMembers(path, app, remote) {
|
|
|
350
355
|
}
|
|
351
356
|
catch (error) {
|
|
352
357
|
logger.error(error);
|
|
358
|
+
throw error;
|
|
353
359
|
}
|
|
354
360
|
}
|
|
361
|
+
else {
|
|
362
|
+
logger.warn(`Missing members directory in ${path}. Skipping...`);
|
|
363
|
+
}
|
|
355
364
|
}
|
|
356
365
|
export async function publishSeedAssets(path, app, remote, assetsClonable) {
|
|
357
366
|
const assetsPath = join(path, 'assets');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appsemble/cli",
|
|
3
|
-
"version": "0.36.10-test.
|
|
3
|
+
"version": "0.36.10-test.4",
|
|
4
4
|
"description": "The CLI for developing with Appsemble apps and blocks",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"app",
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"test": "vitest"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@appsemble/node-utils": "0.36.10-test.
|
|
48
|
-
"@appsemble/types": "0.36.10-test.
|
|
49
|
-
"@appsemble/lang-sdk": "0.36.10-test.
|
|
50
|
-
"@appsemble/utils": "0.36.10-test.
|
|
47
|
+
"@appsemble/node-utils": "0.36.10-test.4",
|
|
48
|
+
"@appsemble/types": "0.36.10-test.4",
|
|
49
|
+
"@appsemble/lang-sdk": "0.36.10-test.4",
|
|
50
|
+
"@appsemble/utils": "0.36.10-test.4",
|
|
51
51
|
"@fortawesome/fontawesome-common-types": "^6.0.0",
|
|
52
52
|
"@inquirer/prompts": "^8.0.0",
|
|
53
53
|
"@koa/cors": "^5.0.0",
|
|
@@ -89,8 +89,8 @@
|
|
|
89
89
|
"yargs": "^17.0.0"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
|
-
"@appsemble/types": "0.36.10-test.
|
|
93
|
-
"@appsemble/server": "0.36.10-test.
|
|
92
|
+
"@appsemble/types": "0.36.10-test.4",
|
|
93
|
+
"@appsemble/server": "0.36.10-test.4",
|
|
94
94
|
"@types/concat-stream": "2.0.3",
|
|
95
95
|
"@types/koa__cors": "5.0.1",
|
|
96
96
|
"@types/koa-compress": "4.0.7",
|
|
@@ -6,7 +6,7 @@ pages:
|
|
|
6
6
|
- name: Example Page A
|
|
7
7
|
blocks:
|
|
8
8
|
- type: action-button
|
|
9
|
-
version: 0.36.10-test.
|
|
9
|
+
version: 0.36.10-test.4
|
|
10
10
|
parameters:
|
|
11
11
|
icon: arrow-right
|
|
12
12
|
actions:
|
|
@@ -17,7 +17,7 @@ pages:
|
|
|
17
17
|
- name: Example Page B
|
|
18
18
|
blocks:
|
|
19
19
|
- type: action-button
|
|
20
|
-
version: 0.36.10-test.
|
|
20
|
+
version: 0.36.10-test.4
|
|
21
21
|
parameters:
|
|
22
22
|
icon: arrow-left
|
|
23
23
|
actions:
|