@appsemble/cli 0.40.3 → 0.40.5

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 (179) hide show
  1. package/README.md +3 -74
  2. package/index.js +0 -2
  3. package/lib/app.d.ts +1 -2
  4. package/lib/app.js +1 -1
  5. package/package.json +8 -23
  6. package/templates/apps/empty/app-definition.yaml +2 -2
  7. package/templates/blocks/mini-jsx/package.json +1 -1
  8. package/templates/blocks/preact/package.json +2 -2
  9. package/templates/blocks/vanilla/package.json +1 -1
  10. package/commands/serve.d.ts +0 -14
  11. package/commands/serve.js +0 -305
  12. package/lib/createServers.d.ts +0 -15
  13. package/lib/createServers.js +0 -62
  14. package/server/argv.d.ts +0 -117
  15. package/server/argv.js +0 -25
  16. package/server/controllers/apps/actions/index.d.ts +0 -5
  17. package/server/controllers/apps/actions/index.js +0 -6
  18. package/server/controllers/apps/actions/proxyDelete.d.ts +0 -2
  19. package/server/controllers/apps/actions/proxyDelete.js +0 -4
  20. package/server/controllers/apps/actions/proxyGet.d.ts +0 -2
  21. package/server/controllers/apps/actions/proxyGet.js +0 -4
  22. package/server/controllers/apps/actions/proxyPatch.d.ts +0 -2
  23. package/server/controllers/apps/actions/proxyPatch.js +0 -4
  24. package/server/controllers/apps/actions/proxyPost.d.ts +0 -2
  25. package/server/controllers/apps/actions/proxyPost.js +0 -4
  26. package/server/controllers/apps/actions/proxyPut.d.ts +0 -2
  27. package/server/controllers/apps/actions/proxyPut.js +0 -4
  28. package/server/controllers/apps/index.d.ts +0 -2
  29. package/server/controllers/apps/index.js +0 -3
  30. package/server/controllers/apps/members/current/getCurrentAppMember.d.ts +0 -2
  31. package/server/controllers/apps/members/current/getCurrentAppMember.js +0 -4
  32. package/server/controllers/apps/members/current/groups/getCurrentAppMemberGroups.d.ts +0 -2
  33. package/server/controllers/apps/members/current/groups/getCurrentAppMemberGroups.js +0 -4
  34. package/server/controllers/apps/members/current/groups/index.d.ts +0 -1
  35. package/server/controllers/apps/members/current/groups/index.js +0 -2
  36. package/server/controllers/apps/members/current/index.d.ts +0 -2
  37. package/server/controllers/apps/members/current/index.js +0 -3
  38. package/server/controllers/apps/members/index.d.ts +0 -1
  39. package/server/controllers/apps/members/index.js +0 -2
  40. package/server/controllers/common/apps/assets/getAppAssetById.d.ts +0 -2
  41. package/server/controllers/common/apps/assets/getAppAssetById.js +0 -4
  42. package/server/controllers/common/apps/assets/index.d.ts +0 -1
  43. package/server/controllers/common/apps/assets/index.js +0 -2
  44. package/server/controllers/common/apps/groups/getAppGroups.d.ts +0 -2
  45. package/server/controllers/common/apps/groups/getAppGroups.js +0 -4
  46. package/server/controllers/common/apps/groups/index.d.ts +0 -1
  47. package/server/controllers/common/apps/groups/index.js +0 -2
  48. package/server/controllers/common/apps/index.d.ts +0 -5
  49. package/server/controllers/common/apps/index.js +0 -6
  50. package/server/controllers/common/apps/messages/getAppMessages.d.ts +0 -2
  51. package/server/controllers/common/apps/messages/getAppMessages.js +0 -4
  52. package/server/controllers/common/apps/messages/index.d.ts +0 -1
  53. package/server/controllers/common/apps/messages/index.js +0 -2
  54. package/server/controllers/common/apps/resources/countAppResources.d.ts +0 -2
  55. package/server/controllers/common/apps/resources/countAppResources.js +0 -4
  56. package/server/controllers/common/apps/resources/createAppResource.d.ts +0 -2
  57. package/server/controllers/common/apps/resources/createAppResource.js +0 -4
  58. package/server/controllers/common/apps/resources/deleteAppResource.d.ts +0 -2
  59. package/server/controllers/common/apps/resources/deleteAppResource.js +0 -4
  60. package/server/controllers/common/apps/resources/getAppResourceById.d.ts +0 -2
  61. package/server/controllers/common/apps/resources/getAppResourceById.js +0 -4
  62. package/server/controllers/common/apps/resources/index.d.ts +0 -6
  63. package/server/controllers/common/apps/resources/index.js +0 -7
  64. package/server/controllers/common/apps/resources/queryAppResources.d.ts +0 -2
  65. package/server/controllers/common/apps/resources/queryAppResources.js +0 -4
  66. package/server/controllers/common/apps/resources/updateAppResource.d.ts +0 -2
  67. package/server/controllers/common/apps/resources/updateAppResource.js +0 -4
  68. package/server/controllers/common/apps/variables/getAppVariables.d.ts +0 -2
  69. package/server/controllers/common/apps/variables/getAppVariables.js +0 -4
  70. package/server/controllers/common/apps/variables/index.d.ts +0 -1
  71. package/server/controllers/common/apps/variables/index.js +0 -2
  72. package/server/controllers/common/index.d.ts +0 -1
  73. package/server/controllers/common/index.js +0 -2
  74. package/server/controllers/index.d.ts +0 -3
  75. package/server/controllers/index.js +0 -4
  76. package/server/controllers/main/apps/assets/createAppAsset.d.ts +0 -2
  77. package/server/controllers/main/apps/assets/createAppAsset.js +0 -4
  78. package/server/controllers/main/apps/assets/index.d.ts +0 -1
  79. package/server/controllers/main/apps/assets/index.js +0 -2
  80. package/server/controllers/main/apps/index.d.ts +0 -1
  81. package/server/controllers/main/apps/index.js +0 -2
  82. package/server/controllers/main/index.d.ts +0 -1
  83. package/server/controllers/main/index.js +0 -2
  84. package/server/db/index.d.ts +0 -2
  85. package/server/db/index.js +0 -10
  86. package/server/db/methods.d.ts +0 -11
  87. package/server/db/methods.js +0 -241
  88. package/server/models/Resource.d.ts +0 -16
  89. package/server/models/Resource.js +0 -23
  90. package/server/models/Theme.d.ts +0 -17
  91. package/server/models/Theme.js +0 -11
  92. package/server/options/applyAppServiceSecrets.d.ts +0 -3
  93. package/server/options/applyAppServiceSecrets.js +0 -2
  94. package/server/options/checkAppMemberAppPermissions.d.ts +0 -1
  95. package/server/options/checkAppMemberAppPermissions.js +0 -4
  96. package/server/options/checkAppPermissions.d.ts +0 -1
  97. package/server/options/checkAppPermissions.js +0 -4
  98. package/server/options/checkAuthSubjectAppPermissions.d.ts +0 -1
  99. package/server/options/checkAuthSubjectAppPermissions.js +0 -4
  100. package/server/options/checkUserOrganizationPermissions.d.ts +0 -1
  101. package/server/options/checkUserOrganizationPermissions.js +0 -4
  102. package/server/options/createAppAsset.d.ts +0 -2
  103. package/server/options/createAppAsset.js +0 -14
  104. package/server/options/createAppResourcesWithAssets.d.ts +0 -3
  105. package/server/options/createAppResourcesWithAssets.js +0 -16
  106. package/server/options/createSettings.d.ts +0 -2
  107. package/server/options/createSettings.js +0 -34
  108. package/server/options/createTheme.d.ts +0 -2
  109. package/server/options/createTheme.js +0 -7
  110. package/server/options/deleteAppAsset.d.ts +0 -2
  111. package/server/options/deleteAppAsset.js +0 -15
  112. package/server/options/deleteAppResource.d.ts +0 -2
  113. package/server/options/deleteAppResource.js +0 -16
  114. package/server/options/email.d.ts +0 -1
  115. package/server/options/email.js +0 -2
  116. package/server/options/getApp.d.ts +0 -3
  117. package/server/options/getApp.js +0 -5
  118. package/server/options/getAppAsset.d.ts +0 -2
  119. package/server/options/getAppAsset.js +0 -8
  120. package/server/options/getAppAssets.d.ts +0 -2
  121. package/server/options/getAppAssets.js +0 -8
  122. package/server/options/getAppBlockStyles.d.ts +0 -2
  123. package/server/options/getAppBlockStyles.js +0 -27
  124. package/server/options/getAppDetails.d.ts +0 -2
  125. package/server/options/getAppDetails.js +0 -8
  126. package/server/options/getAppGroups.d.ts +0 -2
  127. package/server/options/getAppGroups.js +0 -4
  128. package/server/options/getAppIcon.d.ts +0 -2
  129. package/server/options/getAppIcon.js +0 -6
  130. package/server/options/getAppMessages.d.ts +0 -3
  131. package/server/options/getAppMessages.js +0 -4
  132. package/server/options/getAppReadmes.d.ts +0 -2
  133. package/server/options/getAppReadmes.js +0 -11
  134. package/server/options/getAppResource.d.ts +0 -3
  135. package/server/options/getAppResource.js +0 -5
  136. package/server/options/getAppResources.d.ts +0 -3
  137. package/server/options/getAppResources.js +0 -5
  138. package/server/options/getAppScreenshots.d.ts +0 -2
  139. package/server/options/getAppScreenshots.js +0 -20
  140. package/server/options/getAppStyles.d.ts +0 -2
  141. package/server/options/getAppStyles.js +0 -10
  142. package/server/options/getAppUrl.d.ts +0 -2
  143. package/server/options/getAppUrl.js +0 -5
  144. package/server/options/getAppVariables.d.ts +0 -3
  145. package/server/options/getAppVariables.js +0 -4
  146. package/server/options/getBlockAsset.d.ts +0 -2
  147. package/server/options/getBlockAsset.js +0 -33
  148. package/server/options/getBlockAssetsPaths.d.ts +0 -2
  149. package/server/options/getBlockAssetsPaths.js +0 -8
  150. package/server/options/getBlockMessages.d.ts +0 -2
  151. package/server/options/getBlockMessages.js +0 -4
  152. package/server/options/getCsp.d.ts +0 -2
  153. package/server/options/getCsp.js +0 -14
  154. package/server/options/getCurrentAppMember.d.ts +0 -3
  155. package/server/options/getCurrentAppMember.js +0 -4
  156. package/server/options/getCurrentAppMemberGroups.d.ts +0 -3
  157. package/server/options/getCurrentAppMemberGroups.js +0 -2
  158. package/server/options/getDbUpdated.d.ts +0 -1
  159. package/server/options/getDbUpdated.js +0 -2
  160. package/server/options/getHost.d.ts +0 -2
  161. package/server/options/getHost.js +0 -5
  162. package/server/options/getTheme.d.ts +0 -2
  163. package/server/options/getTheme.js +0 -6
  164. package/server/options/index.d.ts +0 -40
  165. package/server/options/index.js +0 -41
  166. package/server/options/options.d.ts +0 -2
  167. package/server/options/options.js +0 -46
  168. package/server/options/parseQuery.d.ts +0 -2
  169. package/server/options/parseQuery.js +0 -86
  170. package/server/options/reloadUser.d.ts +0 -1
  171. package/server/options/reloadUser.js +0 -2
  172. package/server/options/sendNotifications.d.ts +0 -1
  173. package/server/options/sendNotifications.js +0 -2
  174. package/server/options/updateAppResource.d.ts +0 -3
  175. package/server/options/updateAppResource.js +0 -16
  176. package/server/routes/appRouter/index.d.ts +0 -2
  177. package/server/routes/appRouter/index.js +0 -4
  178. package/server/utils/resourceLock.d.ts +0 -11
  179. package/server/utils/resourceLock.js +0 -23
@@ -1,5 +0,0 @@
1
- import { Resource } from '../models/Resource.js';
2
- export function getAppResource({ id, type, }) {
3
- return Resource.findById(id, type);
4
- }
5
- //# sourceMappingURL=getAppResource.js.map
@@ -1,3 +0,0 @@
1
- import { type GetAppResourcesParams } from '@appsemble/node-utils';
2
- import { type Resource as ResourceInterface } from '@appsemble/types';
3
- export declare function getAppResources({ findOptions, type, }: GetAppResourcesParams): Promise<ResourceInterface[] | []>;
@@ -1,5 +0,0 @@
1
- import { Resource } from '../models/Resource.js';
2
- export function getAppResources({ findOptions, type, }) {
3
- return Resource.findAll(findOptions, type);
4
- }
5
- //# sourceMappingURL=getAppResources.js.map
@@ -1,2 +0,0 @@
1
- import { type AppScreenshot as AppScreenShotInterface, type GetAppSubEntityParams } from '@appsemble/node-utils';
2
- export declare function getAppScreenshots({ app, }: GetAppSubEntityParams): Promise<AppScreenShotInterface[]>;
@@ -1,20 +0,0 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { lookup } from 'mime-types';
3
- import sharp from 'sharp';
4
- export function getAppScreenshots({ app, }) {
5
- const appScreenshotsPromises = app.screenshotUrls?.map(async (screenshotUrl, index) => {
6
- const screenshot = await readFile(`${app.path}/screenshots/${screenshotUrl}`);
7
- const img = sharp(screenshot);
8
- const { format, height, width } = await img.metadata();
9
- const mime = lookup(format ?? '');
10
- return {
11
- id: index,
12
- width,
13
- height,
14
- mime,
15
- screenshot,
16
- };
17
- });
18
- return Promise.all(appScreenshotsPromises ?? []);
19
- }
20
- //# sourceMappingURL=getAppScreenshots.js.map
@@ -1,2 +0,0 @@
1
- import { type AppStyles, type GetAppSubEntityParams } from '@appsemble/node-utils';
2
- export declare function getAppStyles({ context }: GetAppSubEntityParams): Promise<AppStyles>;
@@ -1,10 +0,0 @@
1
- import { replaceAssetFunctions, } from '@appsemble/node-utils';
2
- export function getAppStyles({ context }) {
3
- const { apiUrl, appsembleApp } = context;
4
- const { coreStyle = '', id, sharedStyle = '' } = appsembleApp;
5
- return Promise.resolve({
6
- coreStyle: replaceAssetFunctions(coreStyle, id, apiUrl),
7
- sharedStyle: replaceAssetFunctions(sharedStyle, id, apiUrl),
8
- });
9
- }
10
- //# sourceMappingURL=getAppStyles.js.map
@@ -1,2 +0,0 @@
1
- import { type GetAppSubEntityParams } from '@appsemble/node-utils';
2
- export declare function getAppUrl({ context }: GetAppSubEntityParams): Promise<URL>;
@@ -1,5 +0,0 @@
1
- export function getAppUrl({ context }) {
2
- const url = new URL(context.appHost);
3
- return Promise.resolve(url);
4
- }
5
- //# sourceMappingURL=getAppUrl.js.map
@@ -1,3 +0,0 @@
1
- import { type GetAppSubEntityParams } from '@appsemble/node-utils';
2
- import { type AppConfigEntry as AppVariableInterface } from '@appsemble/types';
3
- export declare function getAppVariables({ context, }: GetAppSubEntityParams): Promise<AppVariableInterface[]>;
@@ -1,4 +0,0 @@
1
- export function getAppVariables({ context, }) {
2
- return Promise.resolve(context.appVariables);
3
- }
4
- //# sourceMappingURL=getAppVariables.js.map
@@ -1,2 +0,0 @@
1
- import { type GetBlockAssetParams, type ProjectAsset } from '@appsemble/node-utils';
2
- export declare function getBlockAsset({ context, filename, name, version, }: GetBlockAssetParams): Promise<ProjectAsset>;
@@ -1,33 +0,0 @@
1
- import { existsSync } from 'node:fs';
2
- import { readFile } from 'node:fs/promises';
3
- import { join } from 'node:path';
4
- import { parseBlockName } from '@appsemble/lang-sdk';
5
- import globalCacheDir from 'global-cache-dir';
6
- import { lookup } from 'mime-types';
7
- export async function getBlockAsset({ context, filename, name, version, }) {
8
- const { blockConfigs } = context;
9
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
- // @ts-ignore 2488 [...] | undefined must have a '[Symbol.iterator]()'
11
- const [organisation, blockName] = parseBlockName(name);
12
- if (existsSync(join(process.cwd(), 'blocks', blockName))) {
13
- const blockConfig = blockConfigs.find((block) => block.name === name);
14
- // @ts-expect-error 18048 variable is possibly undefined (strictNullChecks)
15
- const asset = await readFile(`${blockConfig.dir}/${blockConfig.output}/${filename}`);
16
- const mime = lookup(filename) || '';
17
- return {
18
- content: asset,
19
- filename,
20
- mime,
21
- };
22
- }
23
- const cacheDir = await globalCacheDir('appsemble');
24
- const cachedAsset = join(cacheDir, 'blocks', organisation, blockName, version, 'assets', filename);
25
- const asset = await readFile(cachedAsset);
26
- const mime = lookup(filename) || '';
27
- return {
28
- content: asset,
29
- filename,
30
- mime,
31
- };
32
- }
33
- //# sourceMappingURL=getBlockAsset.js.map
@@ -1,2 +0,0 @@
1
- import { type GetBlocksAssetsPathsParams } from '@appsemble/node-utils';
2
- export declare function getBlocksAssetsPaths({ context }: GetBlocksAssetsPathsParams): Promise<string[]>;
@@ -1,8 +0,0 @@
1
- import { prefixBlockURL } from '@appsemble/lang-sdk';
2
- export function getBlocksAssetsPaths({ context }) {
3
- const { appBlocks } = context;
4
- return Promise.resolve(appBlocks.flatMap((block) => block.files
5
- .filter((filename) => !filename.endsWith('.map'))
6
- .map((filename) => prefixBlockURL({ type: block.name, version: block.version }, filename))));
7
- }
8
- //# sourceMappingURL=getBlockAssetsPaths.js.map
@@ -1,2 +0,0 @@
1
- import { type BlockMessages as BlockMessagesInterface, type GetBlockMessagesParams } from '@appsemble/node-utils';
2
- export declare function getBlockMessages({ context, }: GetBlockMessagesParams): Promise<BlockMessagesInterface[]>;
@@ -1,4 +0,0 @@
1
- export function getBlockMessages({ context, }) {
2
- return Promise.resolve(context.appBlocks);
3
- }
4
- //# sourceMappingURL=getBlockMessages.js.map
@@ -1,2 +0,0 @@
1
- import { type ContentSecurityPolicy, type GetCspParams } from '@appsemble/node-utils';
2
- export declare function getCsp({ host, nonce, settingsHash }: GetCspParams): ContentSecurityPolicy;
@@ -1,14 +0,0 @@
1
- export function getCsp({ host, nonce, settingsHash }) {
2
- return {
3
- 'connect-src': ['*', 'blob:', 'data:'],
4
- 'default-src': ["'self'"],
5
- 'script-src': ["'self'", `'nonce-${nonce}'`, settingsHash, "'unsafe-eval'"],
6
- 'img-src': ['*', 'blob:', 'data:', host],
7
- 'media-src': ['*', 'blob:', 'data:', host],
8
- 'style-src': ["'self'", "'unsafe-inline'", 'https://fonts.googleapis.com'],
9
- 'font-src': ['*', 'data:'],
10
- 'frame-src': ["'self'", 'blob:', '*.vimeo.com', '*.youtube.com', '*.weseedo.nl'],
11
- 'object-src': ["'self'", 'data:', 'blob:'],
12
- };
13
- }
14
- //# sourceMappingURL=getCsp.js.map
@@ -1,3 +0,0 @@
1
- import { type GetCurrentAppMemberParams } from '@appsemble/node-utils';
2
- import { type AppMemberInfo } from '@appsemble/types';
3
- export declare function getCurrentAppMember({ context, }: GetCurrentAppMemberParams): Promise<AppMemberInfo>;
@@ -1,4 +0,0 @@
1
- export function getCurrentAppMember({ context, }) {
2
- return Promise.resolve(context.appMemberInfo);
3
- }
4
- //# sourceMappingURL=getCurrentAppMember.js.map
@@ -1,3 +0,0 @@
1
- import { type GetAppSubEntityParams } from '@appsemble/node-utils';
2
- import { type Group } from '@appsemble/types';
3
- export declare const getCurrentAppMemberGroups: ({ context }: GetAppSubEntityParams) => Promise<Group[]>;
@@ -1,2 +0,0 @@
1
- export const getCurrentAppMemberGroups = ({ context }) => Promise.resolve(context.appGroups);
2
- //# sourceMappingURL=getCurrentAppMemberGroups.js.map
@@ -1 +0,0 @@
1
- export declare const getDbUpdated: () => Promise<Date | number>;
@@ -1,2 +0,0 @@
1
- export const getDbUpdated = () => Promise.resolve(new Date());
2
- //# sourceMappingURL=getDbUpdated.js.map
@@ -1,2 +0,0 @@
1
- import { type GetHostParams } from '@appsemble/node-utils';
2
- export declare function getHost({ context }: GetHostParams): string;
@@ -1,5 +0,0 @@
1
- export function getHost({ context }) {
2
- const { apiUrl } = context;
3
- return apiUrl;
4
- }
5
- //# sourceMappingURL=getHost.js.map
@@ -1,2 +0,0 @@
1
- import { type GetThemeParams, type Theme as ThemeInterface } from '@appsemble/node-utils';
2
- export declare function getTheme({ theme }: GetThemeParams): Promise<ThemeInterface | null>;
@@ -1,6 +0,0 @@
1
- import { Theme } from '../models/Theme.js';
2
- export async function getTheme({ theme }) {
3
- const persistedTheme = await Theme.findOne({ where: theme });
4
- return persistedTheme && { css: persistedTheme.css };
5
- }
6
- //# sourceMappingURL=getTheme.js.map
@@ -1,40 +0,0 @@
1
- export * from './createSettings.js';
2
- export * from './createTheme.js';
3
- export * from './getApp.js';
4
- export * from './getAppBlockStyles.js';
5
- export * from './getAppDetails.js';
6
- export * from './getAppIcon.js';
7
- export * from './getAppMessages.js';
8
- export * from './getAppResource.js';
9
- export * from './getAppResources.js';
10
- export * from './getAppScreenshots.js';
11
- export * from './getAppStyles.js';
12
- export * from './getAppUrl.js';
13
- export * from './getBlockAsset.js';
14
- export * from './getBlockAssetsPaths.js';
15
- export * from './getCsp.js';
16
- export * from './getDbUpdated.js';
17
- export * from './getHost.js';
18
- export * from './getTheme.js';
19
- export * from './createAppResourcesWithAssets.js';
20
- export * from './updateAppResource.js';
21
- export * from './deleteAppResource.js';
22
- export * from './parseQuery.js';
23
- export * from './getAppAsset.js';
24
- export * from './getAppAssets.js';
25
- export * from './createAppAsset.js';
26
- export * from './getBlockMessages.js';
27
- export * from './deleteAppAsset.js';
28
- export * from './reloadUser.js';
29
- export * from './email.js';
30
- export * from './sendNotifications.js';
31
- export * from './applyAppServiceSecrets.js';
32
- export * from './getCurrentAppMember.js';
33
- export * from './getCurrentAppMemberGroups.js';
34
- export * from './getAppGroups.js';
35
- export * from './getAppReadmes.js';
36
- export * from './getAppVariables.js';
37
- export * from './checkAppMemberAppPermissions.js';
38
- export * from './checkUserOrganizationPermissions.js';
39
- export * from './checkAuthSubjectAppPermissions.js';
40
- export * from './checkAppPermissions.js';
@@ -1,41 +0,0 @@
1
- export * from './createSettings.js';
2
- export * from './createTheme.js';
3
- export * from './getApp.js';
4
- export * from './getAppBlockStyles.js';
5
- export * from './getAppDetails.js';
6
- export * from './getAppIcon.js';
7
- export * from './getAppMessages.js';
8
- export * from './getAppResource.js';
9
- export * from './getAppResources.js';
10
- export * from './getAppScreenshots.js';
11
- export * from './getAppStyles.js';
12
- export * from './getAppUrl.js';
13
- export * from './getBlockAsset.js';
14
- export * from './getBlockAssetsPaths.js';
15
- export * from './getCsp.js';
16
- export * from './getDbUpdated.js';
17
- export * from './getHost.js';
18
- export * from './getTheme.js';
19
- export * from './createAppResourcesWithAssets.js';
20
- export * from './updateAppResource.js';
21
- export * from './deleteAppResource.js';
22
- export * from './parseQuery.js';
23
- export * from './getAppAsset.js';
24
- export * from './getAppAssets.js';
25
- export * from './createAppAsset.js';
26
- export * from './getBlockMessages.js';
27
- export * from './deleteAppAsset.js';
28
- export * from './reloadUser.js';
29
- export * from './email.js';
30
- export * from './sendNotifications.js';
31
- export * from './applyAppServiceSecrets.js';
32
- export * from './getCurrentAppMember.js';
33
- export * from './getCurrentAppMemberGroups.js';
34
- export * from './getAppGroups.js';
35
- export * from './getAppReadmes.js';
36
- export * from './getAppVariables.js';
37
- export * from './checkAppMemberAppPermissions.js';
38
- export * from './checkUserOrganizationPermissions.js';
39
- export * from './checkAuthSubjectAppPermissions.js';
40
- export * from './checkAppPermissions.js';
41
- //# sourceMappingURL=index.js.map
@@ -1,2 +0,0 @@
1
- import { type Options } from '@appsemble/node-utils';
2
- export declare const options: Options;
@@ -1,46 +0,0 @@
1
- import { applyAppServiceSecrets, checkAppMemberAppPermissions, checkAppPermissions, checkAuthSubjectAppPermissions, checkUserOrganizationPermissions, createAppAsset, createAppResourcesWithAssets, createSettings, createTheme, deleteAppAsset, deleteAppResource, email, getApp, getAppAsset, getAppAssets, getAppBlockStyles, getAppDetails, getAppGroups, getAppIcon, getAppMessages, getAppReadmes, getAppResource, getAppResources, getAppScreenshots, getAppStyles, getAppUrl, getAppVariables, getBlockAsset, getBlockMessages, getBlocksAssetsPaths, getCsp, getCurrentAppMember, getCurrentAppMemberGroups, getDbUpdated, getHost, getTheme, parseQuery, reloadUser, sendNotifications, updateAppResource, } from './index.js';
2
- export const options = {
3
- applyAppServiceSecrets,
4
- createAppAsset,
5
- createAppResourcesWithAssets,
6
- createSettings,
7
- createTheme,
8
- deleteAppAsset,
9
- deleteAppResource,
10
- email,
11
- getApp,
12
- getAppAsset,
13
- getAppAssets,
14
- getAppBlockStyles,
15
- getAppDetails,
16
- getAppIcon,
17
- getAppMessages,
18
- getAppReadmes,
19
- getAppResource,
20
- getAppResources,
21
- getAppScreenshots,
22
- // XXX: weird
23
- // @ts-expect-error 2322 ... not assignable to ... (strictNullChecks)
24
- getAppStyles,
25
- getAppGroups,
26
- getAppUrl,
27
- getAppVariables,
28
- getBlockAsset,
29
- getBlockMessages,
30
- getBlocksAssetsPaths,
31
- getCsp,
32
- getDbUpdated,
33
- getHost,
34
- getTheme,
35
- parseQuery,
36
- reloadUser,
37
- sendNotifications,
38
- updateAppResource,
39
- checkAppPermissions,
40
- checkUserOrganizationPermissions,
41
- checkAppMemberAppPermissions,
42
- checkAuthSubjectAppPermissions,
43
- getCurrentAppMember,
44
- getCurrentAppMemberGroups,
45
- };
46
- //# sourceMappingURL=options.js.map
@@ -1,2 +0,0 @@
1
- import { type ParsedQuery, type ParseQueryParams } from '@appsemble/node-utils';
2
- export declare function parseQuery({ $filter, $orderby }: ParseQueryParams): ParsedQuery;
@@ -1,86 +0,0 @@
1
- import { processLiteral, } from '@appsemble/node-utils';
2
- import { defaultParser, TokenType } from '@odata/parser';
3
- const operators = new Map([
4
- [TokenType.EqualsExpression, 'eq'],
5
- [TokenType.LesserOrEqualsExpression, 'lte'],
6
- [TokenType.LesserThanExpression, 'lt'],
7
- [TokenType.GreaterOrEqualsExpression, 'gte'],
8
- [TokenType.GreaterThanExpression, 'gt'],
9
- [TokenType.NotEqualsExpression, 'ne'],
10
- ]);
11
- function renameOData(name) {
12
- switch (name) {
13
- case '$author/id':
14
- return 'AuthorId';
15
- default:
16
- return name;
17
- }
18
- }
19
- function processToken(token) {
20
- if (token.type === TokenType.ParenExpression) {
21
- return processToken(token.value);
22
- }
23
- if (token.type === TokenType.FirstMemberExpression) {
24
- return token.raw;
25
- }
26
- if (operators.has(token.type)) {
27
- return {
28
- [processToken(token.value.left)]: {
29
- [operators.get(token.type)]: processToken(token.value.right),
30
- },
31
- };
32
- }
33
- if (token.type === TokenType.Literal) {
34
- return processLiteral(token);
35
- }
36
- throw new TypeError(`${token.position}: Unhandled OData type: ${token.type}`);
37
- }
38
- function processLogicalExpression(token) {
39
- if (token.type === TokenType.BoolParenExpression || token.type === TokenType.CommonExpression) {
40
- return processLogicalExpression(token.value);
41
- }
42
- if (token.type === TokenType.NotExpression) {
43
- return { not: processLogicalExpression(token.value) };
44
- }
45
- const op = token.type === TokenType.AndExpression
46
- ? 'and'
47
- : token.type === TokenType.OrExpression
48
- ? 'or'
49
- : undefined;
50
- if (!op) {
51
- return processToken(token);
52
- }
53
- const flatten = (expr) => (op in expr ? expr[op] : expr);
54
- const left = flatten(processLogicalExpression(token.value.left));
55
- const right = flatten(processLogicalExpression(token.value.right));
56
- return { [op]: [].concat(left).concat(right) };
57
- }
58
- function parseOdataFilter(query) {
59
- if (!query) {
60
- return {};
61
- }
62
- if (typeof query === 'string') {
63
- const renamedQuery = query
64
- .split(' ')
65
- .map((queryItem) => renameOData(queryItem))
66
- .join(' ');
67
- const ast = defaultParser.filter(renamedQuery);
68
- return processLogicalExpression(ast);
69
- }
70
- return processLogicalExpression(query);
71
- }
72
- function parseOdataOrder(query) {
73
- if (!query) {
74
- return [];
75
- }
76
- return query.split(/,/g).map((line) => {
77
- const [name, direction] = line.split(' ');
78
- return [renameOData(name), direction?.toUpperCase()];
79
- });
80
- }
81
- export function parseQuery({ $filter, $orderby }) {
82
- const where = parseOdataFilter($filter);
83
- const order = parseOdataOrder($orderby);
84
- return { where, order };
85
- }
86
- //# sourceMappingURL=parseQuery.js.map
@@ -1 +0,0 @@
1
- export declare const reloadUser: () => Promise<Record<string, any>>;
@@ -1,2 +0,0 @@
1
- export const reloadUser = () => Promise.resolve({});
2
- //# sourceMappingURL=reloadUser.js.map
@@ -1 +0,0 @@
1
- export declare const sendNotifications: () => Promise<void>;
@@ -1,2 +0,0 @@
1
- export const sendNotifications = () => Promise.resolve();
2
- //# sourceMappingURL=sendNotifications.js.map
@@ -1,3 +0,0 @@
1
- import { type UpdateAppResourceParams } from '@appsemble/node-utils';
2
- import { type Resource as ResourceInterface } from '@appsemble/types';
3
- export declare function updateAppResource({ context, id, ifMatch, resource, type, }: UpdateAppResourceParams): Promise<ResourceInterface | null>;
@@ -1,16 +0,0 @@
1
- import { createResourceEtag, matchesResourceIfMatch, throwResourcePreconditionFailedKoaError, } from '@appsemble/node-utils';
2
- import { Resource } from '../models/Resource.js';
3
- import { withResourceLock } from '../utils/resourceLock.js';
4
- export function updateAppResource({ context, id, ifMatch, resource, type, }) {
5
- return withResourceLock(type, id, async () => {
6
- if (ifMatch) {
7
- const existing = await Resource.findById(id, type);
8
- if (!existing ||
9
- !matchesResourceIfMatch(ifMatch, createResourceEtag(existing))) {
10
- throwResourcePreconditionFailedKoaError(context, type, id);
11
- }
12
- }
13
- return Resource.updateOne(id, resource, type);
14
- });
15
- }
16
- //# sourceMappingURL=updateAppResource.js.map
@@ -1,2 +0,0 @@
1
- import { type Middleware } from 'koa';
2
- export declare const appRouter: Middleware;
@@ -1,4 +0,0 @@
1
- import { createAppRouter } from '@appsemble/node-utils';
2
- import { options } from '../../options/options.js';
3
- export const appRouter = createAppRouter(options);
4
- //# sourceMappingURL=index.js.map
@@ -1,11 +0,0 @@
1
- /**
2
- * Serialize file-backed resource operations against the same (type, id) pair so
3
- * the read-then-write pattern used by `updateAppResource`/`deleteAppResource`
4
- * cannot interleave with a concurrent writer.
5
- *
6
- * @param type Resource type, used as part of the lock key.
7
- * @param id Resource id, used as part of the lock key.
8
- * @param fn Async operation to run while holding the lock.
9
- * @returns The resolved value of `fn`.
10
- */
11
- export declare function withResourceLock<T>(type: string, id: number | string, fn: () => Promise<T>): Promise<T>;
@@ -1,23 +0,0 @@
1
- const queues = new Map();
2
- /**
3
- * Serialize file-backed resource operations against the same (type, id) pair so
4
- * the read-then-write pattern used by `updateAppResource`/`deleteAppResource`
5
- * cannot interleave with a concurrent writer.
6
- *
7
- * @param type Resource type, used as part of the lock key.
8
- * @param id Resource id, used as part of the lock key.
9
- * @param fn Async operation to run while holding the lock.
10
- * @returns The resolved value of `fn`.
11
- */
12
- export function withResourceLock(type, id, fn) {
13
- const key = `${type}#${id}`;
14
- const previous = queues.get(key) ?? Promise.resolve();
15
- const next = previous.then(fn, fn);
16
- queues.set(key, next.finally(() => {
17
- if (queues.get(key) === next) {
18
- queues.delete(key);
19
- }
20
- }));
21
- return next;
22
- }
23
- //# sourceMappingURL=resourceLock.js.map