@appsemble/cli 0.29.11 → 0.30.2

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.
Files changed (156) hide show
  1. package/README.md +10 -10
  2. package/commands/app/create.d.ts +1 -1
  3. package/commands/app/create.js +5 -5
  4. package/commands/{team → group}/create.d.ts +3 -3
  5. package/commands/{team → group}/create.js +5 -5
  6. package/commands/{team → group}/delete.d.ts +3 -3
  7. package/commands/{team → group}/delete.js +5 -5
  8. package/commands/{team → group}/index.d.ts +2 -2
  9. package/commands/{team → group}/index.js +4 -4
  10. package/commands/{team → group}/member/delete.d.ts +3 -3
  11. package/commands/{team → group}/member/delete.js +5 -5
  12. package/commands/{team → group}/member/index.d.ts +1 -1
  13. package/commands/{team → group}/member/index.js +1 -3
  14. package/commands/{team → group}/member/invite.d.ts +3 -3
  15. package/commands/{team → group}/member/invite.js +5 -5
  16. package/commands/{team → group}/update.d.ts +3 -3
  17. package/commands/{team → group}/update.js +7 -7
  18. package/commands/migrateAppDefinitions.d.ts +13 -0
  19. package/commands/migrateAppDefinitions.js +73 -0
  20. package/commands/serve.d.ts +1 -1
  21. package/commands/serve.js +16 -16
  22. package/index.js +4 -2
  23. package/lib/app.js +13 -3
  24. package/lib/app.test.js +1266 -1262
  25. package/lib/asset.js +4 -2
  26. package/lib/asset.test.js +70 -67
  27. package/lib/block.test.js +144 -142
  28. package/lib/config.test.js +205 -203
  29. package/lib/createServers.js +3 -1
  30. package/lib/group.d.ts +61 -0
  31. package/lib/group.js +55 -0
  32. package/lib/group.test.js +610 -0
  33. package/lib/organization.test.js +189 -187
  34. package/lib/resource.js +3 -1
  35. package/lib/resource.test.js +322 -320
  36. package/lib/serverImport.d.ts +1 -1
  37. package/package.json +8 -7
  38. package/server/argv.d.ts +4 -4
  39. package/server/argv.js +1 -1
  40. package/server/controllers/apps/actions/index.d.ts +5 -0
  41. package/server/controllers/apps/actions/index.js +6 -0
  42. package/server/controllers/apps/actions/proxyDelete.d.ts +2 -0
  43. package/server/controllers/apps/actions/proxyDelete.js +4 -0
  44. package/server/controllers/apps/actions/proxyGet.d.ts +2 -0
  45. package/server/controllers/apps/actions/proxyGet.js +4 -0
  46. package/server/controllers/apps/actions/proxyPatch.d.ts +2 -0
  47. package/server/controllers/apps/actions/proxyPatch.js +4 -0
  48. package/server/controllers/apps/actions/proxyPost.d.ts +2 -0
  49. package/server/controllers/apps/actions/proxyPost.js +4 -0
  50. package/server/controllers/apps/actions/proxyPut.d.ts +2 -0
  51. package/server/controllers/apps/actions/proxyPut.js +4 -0
  52. package/server/controllers/apps/index.d.ts +2 -0
  53. package/server/controllers/apps/index.js +3 -0
  54. package/server/controllers/apps/members/current/getCurrentAppMember.d.ts +2 -0
  55. package/server/controllers/apps/members/current/getCurrentAppMember.js +4 -0
  56. package/server/controllers/apps/members/current/index.d.ts +1 -0
  57. package/server/controllers/apps/members/current/index.js +2 -0
  58. package/server/controllers/apps/members/index.d.ts +1 -0
  59. package/server/controllers/apps/members/index.js +2 -0
  60. package/server/controllers/common/apps/assets/getAppAssetById.d.ts +2 -0
  61. package/server/controllers/common/apps/assets/getAppAssetById.js +4 -0
  62. package/server/controllers/common/apps/assets/index.d.ts +1 -0
  63. package/server/controllers/common/apps/assets/index.js +2 -0
  64. package/server/controllers/common/apps/groups/getAppGroups.d.ts +2 -0
  65. package/server/controllers/common/apps/groups/getAppGroups.js +4 -0
  66. package/server/controllers/common/apps/groups/index.d.ts +1 -0
  67. package/server/controllers/common/apps/groups/index.js +2 -0
  68. package/server/controllers/common/apps/index.d.ts +5 -0
  69. package/server/controllers/common/apps/index.js +6 -0
  70. package/server/controllers/common/apps/messages/getAppMessages.d.ts +2 -0
  71. package/server/controllers/common/apps/messages/getAppMessages.js +4 -0
  72. package/server/controllers/common/apps/messages/index.d.ts +1 -0
  73. package/server/controllers/common/apps/messages/index.js +2 -0
  74. package/server/controllers/common/apps/resources/countAppResources.d.ts +2 -0
  75. package/server/controllers/common/apps/resources/countAppResources.js +4 -0
  76. package/server/controllers/common/apps/resources/createAppResource.d.ts +2 -0
  77. package/server/controllers/common/apps/resources/createAppResource.js +4 -0
  78. package/server/controllers/common/apps/resources/deleteAppResource.d.ts +2 -0
  79. package/server/controllers/common/apps/resources/deleteAppResource.js +4 -0
  80. package/server/controllers/common/apps/resources/getAppResourceById.d.ts +2 -0
  81. package/server/controllers/common/apps/resources/getAppResourceById.js +4 -0
  82. package/server/controllers/common/apps/resources/index.d.ts +6 -0
  83. package/server/controllers/common/apps/resources/index.js +7 -0
  84. package/server/controllers/common/apps/resources/queryAppResources.d.ts +2 -0
  85. package/server/controllers/common/apps/resources/queryAppResources.js +4 -0
  86. package/server/controllers/common/apps/resources/updateAppResource.d.ts +2 -0
  87. package/server/controllers/common/apps/resources/updateAppResource.js +4 -0
  88. package/server/controllers/common/apps/variables/getAppVariables.js +4 -0
  89. package/server/controllers/common/apps/variables/index.d.ts +1 -0
  90. package/server/controllers/common/apps/variables/index.js +2 -0
  91. package/server/controllers/common/index.d.ts +1 -0
  92. package/server/controllers/common/index.js +2 -0
  93. package/server/controllers/index.d.ts +3 -8
  94. package/server/controllers/index.js +3 -8
  95. package/server/controllers/main/apps/assets/createAppAsset.d.ts +2 -0
  96. package/server/controllers/main/apps/assets/createAppAsset.js +4 -0
  97. package/server/controllers/main/apps/assets/index.d.ts +1 -0
  98. package/server/controllers/main/apps/assets/index.js +2 -0
  99. package/server/controllers/main/apps/index.d.ts +1 -0
  100. package/server/controllers/main/apps/index.js +2 -0
  101. package/server/controllers/main/index.d.ts +1 -0
  102. package/server/controllers/main/index.js +2 -0
  103. package/server/options/checkAppMemberAppPermissions.d.ts +1 -0
  104. package/server/options/checkAppMemberAppPermissions.js +4 -0
  105. package/server/options/checkAppPermissions.d.ts +1 -0
  106. package/server/options/checkAppPermissions.js +4 -0
  107. package/server/options/checkAuthSubjectAppPermissions.d.ts +1 -0
  108. package/server/options/checkAuthSubjectAppPermissions.js +4 -0
  109. package/server/options/checkUserOrganizationPermissions.d.ts +1 -0
  110. package/server/options/checkUserOrganizationPermissions.js +4 -0
  111. package/server/options/getAppGroups.d.ts +2 -0
  112. package/server/options/getAppGroups.js +4 -0
  113. package/server/options/getCurrentAppMember.d.ts +3 -0
  114. package/server/options/getCurrentAppMember.js +4 -0
  115. package/server/options/index.d.ts +6 -5
  116. package/server/options/index.js +6 -5
  117. package/server/options/options.js +7 -6
  118. package/templates/apps/empty/app-definition.yaml +2 -2
  119. package/templates/blocks/mini-jsx/package.json +1 -1
  120. package/templates/blocks/preact/package.json +2 -2
  121. package/templates/blocks/vanilla/package.json +1 -1
  122. package/vitest.setup.js +11 -0
  123. package/commands/team/member/update.d.ts +0 -16
  124. package/commands/team/member/update.js +0 -46
  125. package/lib/team.d.ts +0 -61
  126. package/lib/team.js +0 -83
  127. package/lib/team.test.js +0 -625
  128. package/server/controllers/action.d.ts +0 -6
  129. package/server/controllers/action.js +0 -8
  130. package/server/controllers/appMembers.d.ts +0 -2
  131. package/server/controllers/appMembers.js +0 -4
  132. package/server/controllers/appMessages.d.ts +0 -2
  133. package/server/controllers/appMessages.js +0 -4
  134. package/server/controllers/appVariables.js +0 -4
  135. package/server/controllers/assets.d.ts +0 -4
  136. package/server/controllers/assets.js +0 -6
  137. package/server/controllers/oauth2Provider.d.ts +0 -2
  138. package/server/controllers/oauth2Provider.js +0 -4
  139. package/server/controllers/resources.d.ts +0 -7
  140. package/server/controllers/resources.js +0 -9
  141. package/server/controllers/teams.d.ts +0 -2
  142. package/server/controllers/teams.js +0 -4
  143. package/server/options/checkRole.d.ts +0 -1
  144. package/server/options/checkRole.js +0 -2
  145. package/server/options/checkRole.test.d.ts +0 -1
  146. package/server/options/checkRole.test.js +0 -13
  147. package/server/options/getAppMembers.d.ts +0 -3
  148. package/server/options/getAppMembers.js +0 -4
  149. package/server/options/getAppTeams.d.ts +0 -2
  150. package/server/options/getAppTeams.js +0 -4
  151. package/server/options/getAppUserInfo.d.ts +0 -3
  152. package/server/options/getAppUserInfo.js +0 -4
  153. package/server/options/verifyResourceActionPermission.d.ts +0 -1
  154. package/server/options/verifyResourceActionPermission.js +0 -2
  155. /package/lib/{team.test.d.ts → group.test.d.ts} +0 -0
  156. /package/server/controllers/{appVariables.d.ts → common/apps/variables/getAppVariables.d.ts} +0 -0
@@ -2,8 +2,8 @@
2
2
  "private": true,
3
3
  "type": "module",
4
4
  "dependencies": {
5
- "@appsemble/preact": "0.29.11",
6
- "@appsemble/sdk": "0.29.11",
5
+ "@appsemble/preact": "0.30.2",
6
+ "@appsemble/sdk": "0.30.2",
7
7
  "preact": "^10.0.0"
8
8
  }
9
9
  }
@@ -2,6 +2,6 @@
2
2
  "private": true,
3
3
  "type": "module",
4
4
  "dependencies": {
5
- "@appsemble/sdk": "0.29.11"
5
+ "@appsemble/sdk": "0.30.2"
6
6
  }
7
7
  }
package/vitest.setup.js CHANGED
@@ -1,5 +1,16 @@
1
+ import { randomUUID } from 'node:crypto';
1
2
  import { CREDENTIALS_ENV_VAR, setFixtureBase, setLogLevel } from '@appsemble/node-utils';
3
+ import { setupTestDatabase } from '@appsemble/server';
4
+ // eslint-disable-next-line import/no-extraneous-dependencies
5
+ import { beforeAll, beforeEach } from 'vitest';
2
6
  setFixtureBase(import.meta);
3
7
  delete process.env[CREDENTIALS_ENV_VAR];
4
8
  setLogLevel(0);
9
+ let testDB;
10
+ beforeAll(async () => {
11
+ [testDB] = await setupTestDatabase(randomUUID().slice(0, 10));
12
+ });
13
+ beforeEach(async () => {
14
+ await testDB.sync({ force: true });
15
+ });
5
16
  //# sourceMappingURL=vitest.setup.js.map
@@ -1,16 +0,0 @@
1
- import { TeamRole } from '@appsemble/utils';
2
- import { type Argv } from 'yargs';
3
- import { type BaseArguments } from '../../../types.js';
4
- interface InviteTeamArguments extends BaseArguments {
5
- appId: number;
6
- id: number;
7
- user: string;
8
- role: TeamRole;
9
- context: string;
10
- app: string;
11
- }
12
- export declare const command = "update <user> <role>";
13
- export declare const description = "Update an existing team member.";
14
- export declare function builder(yargs: Argv): Argv<any>;
15
- export declare function handler({ app, appId, clientCredentials, context, id, remote, role, user, }: InviteTeamArguments): Promise<void>;
16
- export {};
@@ -1,46 +0,0 @@
1
- import { authenticate } from '@appsemble/node-utils';
2
- import { TeamRole } from '@appsemble/utils';
3
- import { resolveAppIdAndRemote } from '../../../lib/app.js';
4
- import { updateMember } from '../../../lib/team.js';
5
- export const command = 'update <user> <role>';
6
- export const description = 'Update an existing team member.';
7
- export function builder(yargs) {
8
- return yargs
9
- .option('id', {
10
- describe: 'The ID of the team.',
11
- demandOption: true,
12
- })
13
- .option('app-id', {
14
- describe: 'The ID of the app of the team',
15
- type: 'number',
16
- })
17
- .option('app', {
18
- describe: 'The path to the app.',
19
- demandOption: 'context',
20
- })
21
- .option('context', {
22
- describe: 'If specified, use the specified context from .appsemblerc.yaml',
23
- demandOption: 'app',
24
- })
25
- .positional('user', {
26
- describe: 'The ID or email address of the user you want to invite.',
27
- demandOption: true,
28
- })
29
- .positional('role', {
30
- describe: 'The new role of the member.',
31
- demandOption: true,
32
- choices: Object.values(TeamRole),
33
- });
34
- }
35
- export async function handler({ app, appId, clientCredentials, context, id, remote, role, user, }) {
36
- const [resolvedAppId, resolvedRemote] = await resolveAppIdAndRemote(app, context, remote, appId);
37
- await authenticate(resolvedRemote, 'teams:write', clientCredentials);
38
- await updateMember({
39
- id,
40
- appId: resolvedAppId,
41
- user,
42
- role,
43
- remote: resolvedRemote,
44
- });
45
- }
46
- //# sourceMappingURL=update.js.map
package/lib/team.d.ts DELETED
@@ -1,61 +0,0 @@
1
- import { type TeamRole } from '@appsemble/utils';
2
- interface SharedTeamParams {
3
- /**
4
- * The ID of the app to create the team for.
5
- */
6
- appId: number;
7
- /**
8
- * The remote server to create the team on.
9
- */
10
- remote: string;
11
- /**
12
- * The client credentials used to authenticate
13
- */
14
- clientCredentials?: string;
15
- }
16
- interface SharedExistingTeamParams extends SharedTeamParams {
17
- /**
18
- * The ID of the team.
19
- */
20
- id: number;
21
- }
22
- interface SharedTeamMemberParams extends SharedExistingTeamParams {
23
- /**
24
- * The ID or email address of the team member.
25
- */
26
- user: string;
27
- }
28
- interface UpdateTeamMemberParams extends SharedTeamMemberParams {
29
- /**
30
- * The new role of the team member.
31
- */
32
- role: TeamRole;
33
- }
34
- interface UpdateTeamParams extends SharedExistingTeamParams {
35
- /**
36
- * The new name of the team.
37
- */
38
- name?: string;
39
- /**
40
- * The list of annotations to apply in key=value format.
41
- */
42
- annotations?: string[];
43
- }
44
- interface CreateTeamParams extends SharedTeamParams {
45
- /**
46
- * The name of the team.
47
- */
48
- name: string;
49
- /**
50
- * The list of annotations to apply in key=value format.
51
- */
52
- annotations?: string[];
53
- }
54
- export declare function resolveAnnotations(annotations: string[]): Record<string, string>;
55
- export declare function createTeam({ annotations, appId, clientCredentials, name, remote, }: CreateTeamParams): Promise<void>;
56
- export declare function deleteTeam({ appId, clientCredentials, id, remote, }: SharedExistingTeamParams): Promise<void>;
57
- export declare function updateTeam({ annotations, appId, id, name, remote, }: UpdateTeamParams): Promise<void>;
58
- export declare function inviteMember({ appId, id, remote, user, }: SharedTeamMemberParams): Promise<void>;
59
- export declare function updateMember({ appId, id, remote, role, user, }: UpdateTeamMemberParams): Promise<void>;
60
- export declare function deleteMember({ appId, id, user }: SharedTeamMemberParams): Promise<void>;
61
- export {};
package/lib/team.js DELETED
@@ -1,83 +0,0 @@
1
- import { AppsembleError, authenticate, logger } from '@appsemble/node-utils';
2
- import axios from 'axios';
3
- export function resolveAnnotations(annotations) {
4
- const annotationRegex = /^\w+=.+$/;
5
- if (annotations.some((a) => !annotationRegex.test(a))) {
6
- throw new AppsembleError('One of the annotations did not follow the pattern of key=value');
7
- }
8
- return annotations.length
9
- ? Object.fromEntries(annotations.map((annotation) => {
10
- const [key, ...value] = annotation.split('=');
11
- return [key, value.join('=')];
12
- }))
13
- : undefined;
14
- }
15
- export async function createTeam({ annotations = [], appId, clientCredentials, name, remote, }) {
16
- logger.info(`Creating team ${name}`);
17
- await authenticate(remote, 'teams:write', clientCredentials);
18
- try {
19
- const { data: { id }, } = await axios.post(`/api/apps/${appId}/teams`, {
20
- name,
21
- annotations: resolveAnnotations(annotations),
22
- }, { baseURL: remote });
23
- logger.info(`Successfully created team ${name} with ID ${id}`);
24
- }
25
- catch (error) {
26
- logger.error(error);
27
- throw error;
28
- }
29
- }
30
- export async function deleteTeam({ appId, clientCredentials, id, remote, }) {
31
- await authenticate(remote, 'teams:write', clientCredentials);
32
- logger.info(`Deleting team ${id}`);
33
- try {
34
- await axios.delete(`/api/apps/${appId}/teams/${id}`, { baseURL: remote });
35
- logger.info(`Successfully deleted team ${id}`);
36
- }
37
- catch (error) {
38
- logger.error(error);
39
- throw error;
40
- }
41
- }
42
- export async function updateTeam({ annotations = [], appId, id, name, remote, }) {
43
- logger.info(`Updating team ${id}`);
44
- try {
45
- await axios.patch(`/api/apps/${appId}/teams/${id}`, {
46
- name,
47
- annotations: resolveAnnotations(annotations),
48
- }, { baseURL: remote });
49
- logger.info(`Successfully updated team ${id}`);
50
- }
51
- catch (error) {
52
- logger.error(error);
53
- throw error;
54
- }
55
- }
56
- export async function inviteMember({ appId, id, remote, user, }) {
57
- logger.info(`Inviting ${user} to team ${id}`);
58
- try {
59
- await axios.post(`/api/apps/${appId}/teams/${id}/members`, { id: user }, { baseURL: remote });
60
- logger.info(`Successfully invited ${user} to team ${id}`);
61
- }
62
- catch (error) {
63
- logger.error(error);
64
- throw error;
65
- }
66
- }
67
- export async function updateMember({ appId, id, remote, role, user, }) {
68
- logger.info(`Updating ${user}’s role in team ${id} to ${role}`);
69
- try {
70
- await axios.put(`/api/apps/${appId}/teams/${id}/members/${user}`, { role }, { baseURL: remote });
71
- logger.info(`Successfully updated ${user} in team ${id}`);
72
- }
73
- catch (error) {
74
- logger.error(error);
75
- throw error;
76
- }
77
- }
78
- export async function deleteMember({ appId, id, user }) {
79
- logger.info(`Deleting ${user} to team ${id}`);
80
- await axios.delete(`/api/apps/${appId}/teams/${id}/members/${user}`);
81
- logger.info(`Successfully deleted ${user} from team ${id}`);
82
- }
83
- //# sourceMappingURL=team.js.map