@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 CHANGED
@@ -1,9 +1,9 @@
1
- # ![](https://gitlab.com/appsemble/appsemble/-/raw/0.36.10-test.2/config/assets/logo.svg) Appsemble CLI
1
+ # ![](https://gitlab.com/appsemble/appsemble/-/raw/0.36.10-test.4/config/assets/logo.svg) Appsemble CLI
2
2
 
3
3
  > Manage apps and blocks from the command line.
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/@appsemble/cli)](https://www.npmjs.com/package/@appsemble/cli)
6
- [![GitLab CI](https://gitlab.com/appsemble/appsemble/badges/0.36.10-test.2/pipeline.svg)](https://gitlab.com/appsemble/appsemble/-/releases/0.36.10-test.2)
6
+ [![GitLab CI](https://gitlab.com/appsemble/appsemble/badges/0.36.10-test.4/pipeline.svg)](https://gitlab.com/appsemble/appsemble/-/releases/0.36.10-test.4)
7
7
  [![Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](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.2/LICENSE.md) ©
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
- // @ts-expect-error 2322 null is not assignable to type (strictNullChecks)
75
- role: passedUserRole || appSecurity?.default?.role,
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 || (discoveredContext = {});
150
- // @ts-expect-error 2454 Variable used before it was assigned
151
- // eslint-disable-next-line prettier/prettier
152
- discoveredContext.icon = discoveredContext.icon ? resolve(path, discoveredContext.icon) : iconPath;
153
- // @ts-expect-error 2454 Variable used before it was assigned
154
- // eslint-disable-next-line prettier/prettier
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 || (discoveredContext = {});
193
- // @ts-expect-error 2454 Variable used before it was assigned
194
- // eslint-disable-next-line prettier/prettier
195
- discoveredContext.icon = discoveredContext.icon ? resolve(path, discoveredContext.icon) : iconPath;
196
- // @ts-expect-error 2454 Variable used before it was assigned
197
- // eslint-disable-next-line prettier/prettier
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.2",
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.2",
48
- "@appsemble/types": "0.36.10-test.2",
49
- "@appsemble/lang-sdk": "0.36.10-test.2",
50
- "@appsemble/utils": "0.36.10-test.2",
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.2",
93
- "@appsemble/server": "0.36.10-test.2",
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.2
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.2
20
+ version: 0.36.10-test.4
21
21
  parameters:
22
22
  icon: arrow-left
23
23
  actions:
@@ -5,7 +5,7 @@
5
5
  "*.css"
6
6
  ],
7
7
  "dependencies": {
8
- "@appsemble/sdk": "0.36.10-test.2",
8
+ "@appsemble/sdk": "0.36.10-test.4",
9
9
  "mini-jsx": "^4.0.0"
10
10
  }
11
11
  }
@@ -5,8 +5,8 @@
5
5
  "*.css"
6
6
  ],
7
7
  "dependencies": {
8
- "@appsemble/preact": "0.36.10-test.2",
9
- "@appsemble/sdk": "0.36.10-test.2",
8
+ "@appsemble/preact": "0.36.10-test.4",
9
+ "@appsemble/sdk": "0.36.10-test.4",
10
10
  "preact": "^10.0.0"
11
11
  }
12
12
  }
@@ -5,6 +5,6 @@
5
5
  "*.css"
6
6
  ],
7
7
  "dependencies": {
8
- "@appsemble/sdk": "0.36.10-test.2"
8
+ "@appsemble/sdk": "0.36.10-test.4"
9
9
  }
10
10
  }