@appsemble/cli 0.20.45 → 0.21.1

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 (131) hide show
  1. package/README.md +145 -3
  2. package/commands/app/create.d.ts +2 -2
  3. package/commands/app/update.d.ts +2 -2
  4. package/commands/organization/create.d.ts +1 -1
  5. package/commands/organization/update.d.ts +1 -1
  6. package/commands/serve.d.ts +14 -0
  7. package/commands/serve.js +265 -0
  8. package/index.js +2 -0
  9. package/lib/app.d.ts +4 -4
  10. package/lib/app.js +14 -5
  11. package/lib/block.d.ts +2 -2
  12. package/lib/block.js +17 -3
  13. package/lib/block.test.js +6 -4
  14. package/lib/coercers.d.ts +2 -2
  15. package/lib/createServers.d.ts +15 -0
  16. package/lib/createServers.js +58 -0
  17. package/lib/getBlockConfigFromTypeScript.js +3 -2
  18. package/lib/getBlockConfigFromTypeScript.test.js +2 -2
  19. package/lib/organization.d.ts +1 -1
  20. package/package.json +25 -8
  21. package/server/argv.d.ts +117 -0
  22. package/server/argv.js +25 -0
  23. package/server/controllers/action.d.ts +6 -0
  24. package/server/controllers/action.js +8 -0
  25. package/server/controllers/appMembers.d.ts +2 -0
  26. package/server/controllers/appMembers.js +4 -0
  27. package/server/controllers/appMessages.d.ts +2 -0
  28. package/server/controllers/appMessages.js +4 -0
  29. package/server/controllers/assets.d.ts +4 -0
  30. package/server/controllers/assets.js +6 -0
  31. package/server/controllers/index.d.ts +7 -0
  32. package/server/controllers/index.js +8 -0
  33. package/server/controllers/oauth2Provider.d.ts +2 -0
  34. package/server/controllers/oauth2Provider.js +4 -0
  35. package/server/controllers/resources.d.ts +7 -0
  36. package/server/controllers/resources.js +9 -0
  37. package/server/controllers/teams.d.ts +2 -0
  38. package/server/controllers/teams.js +4 -0
  39. package/server/db/index.d.ts +2 -0
  40. package/server/db/index.js +10 -0
  41. package/server/db/methods.d.ts +11 -0
  42. package/server/db/methods.js +232 -0
  43. package/server/db/methods.test.js +365 -0
  44. package/server/models/Resource.d.ts +14 -0
  45. package/server/models/Resource.js +23 -0
  46. package/server/models/Theme.d.ts +17 -0
  47. package/server/models/Theme.js +11 -0
  48. package/server/options/applyAppServiceSecrets.d.ts +3 -0
  49. package/server/options/applyAppServiceSecrets.js +2 -0
  50. package/server/options/checkRole.d.ts +1 -0
  51. package/server/options/checkRole.js +2 -0
  52. package/server/options/checkRole.test.d.ts +1 -0
  53. package/server/options/checkRole.test.js +12 -0
  54. package/server/options/createAppAsset.d.ts +2 -0
  55. package/server/options/createAppAsset.js +15 -0
  56. package/server/options/createAppResourcesWithAssets.d.ts +3 -0
  57. package/server/options/createAppResourcesWithAssets.js +18 -0
  58. package/server/options/createSettings.d.ts +2 -0
  59. package/server/options/createSettings.js +15 -0
  60. package/server/options/createTheme.d.ts +2 -0
  61. package/server/options/createTheme.js +5 -0
  62. package/server/options/deleteAppAsset.d.ts +2 -0
  63. package/server/options/deleteAppAsset.js +15 -0
  64. package/server/options/deleteAppResource.d.ts +2 -0
  65. package/server/options/deleteAppResource.js +5 -0
  66. package/server/options/email.d.ts +1 -0
  67. package/server/options/email.js +2 -0
  68. package/server/options/getApp.d.ts +3 -0
  69. package/server/options/getApp.js +5 -0
  70. package/server/options/getAppAssets.d.ts +2 -0
  71. package/server/options/getAppAssets.js +12 -0
  72. package/server/options/getAppBlockStyles.d.ts +2 -0
  73. package/server/options/getAppBlockStyles.js +26 -0
  74. package/server/options/getAppDetails.d.ts +2 -0
  75. package/server/options/getAppDetails.js +8 -0
  76. package/server/options/getAppIcon.d.ts +3 -0
  77. package/server/options/getAppIcon.js +6 -0
  78. package/server/options/getAppMembers.d.ts +3 -0
  79. package/server/options/getAppMembers.js +4 -0
  80. package/server/options/getAppMessages.d.ts +3 -0
  81. package/server/options/getAppMessages.js +4 -0
  82. package/server/options/getAppResource.d.ts +3 -0
  83. package/server/options/getAppResource.js +5 -0
  84. package/server/options/getAppResources.d.ts +3 -0
  85. package/server/options/getAppResources.js +5 -0
  86. package/server/options/getAppScreenshots.d.ts +2 -0
  87. package/server/options/getAppScreenshots.js +20 -0
  88. package/server/options/getAppStyles.d.ts +2 -0
  89. package/server/options/getAppStyles.js +7 -0
  90. package/server/options/getAppTeams.d.ts +2 -0
  91. package/server/options/getAppTeams.js +4 -0
  92. package/server/options/getAppUrl.d.ts +2 -0
  93. package/server/options/getAppUrl.js +5 -0
  94. package/server/options/getAppUserInfo.d.ts +3 -0
  95. package/server/options/getAppUserInfo.js +4 -0
  96. package/server/options/getBlockAsset.d.ts +2 -0
  97. package/server/options/getBlockAsset.js +28 -0
  98. package/server/options/getBlockAssetsPaths.d.ts +2 -0
  99. package/server/options/getBlockAssetsPaths.js +8 -0
  100. package/server/options/getBlockMessages.d.ts +2 -0
  101. package/server/options/getBlockMessages.js +4 -0
  102. package/server/options/getCsp.d.ts +2 -0
  103. package/server/options/getCsp.js +13 -0
  104. package/server/options/getDbUpdated.d.ts +1 -0
  105. package/server/options/getDbUpdated.js +2 -0
  106. package/server/options/getHost.d.ts +2 -0
  107. package/server/options/getHost.js +5 -0
  108. package/server/options/getTheme.d.ts +2 -0
  109. package/server/options/getTheme.js +8 -0
  110. package/server/options/index.d.ts +35 -0
  111. package/server/options/index.js +36 -0
  112. package/server/options/options.d.ts +2 -0
  113. package/server/options/options.js +39 -0
  114. package/server/options/parseQuery.d.ts +2 -0
  115. package/server/options/parseQuery.js +82 -0
  116. package/server/options/parseQuery.test.d.ts +1 -0
  117. package/server/options/parseQuery.test.js +43 -0
  118. package/server/options/reloadUser.d.ts +1 -0
  119. package/server/options/reloadUser.js +2 -0
  120. package/server/options/sendNotifications.d.ts +1 -0
  121. package/server/options/sendNotifications.js +2 -0
  122. package/server/options/updateAppResource.d.ts +3 -0
  123. package/server/options/updateAppResource.js +5 -0
  124. package/server/options/verifyResourceActionPermission.d.ts +1 -0
  125. package/server/options/verifyResourceActionPermission.js +2 -0
  126. package/server/routes/appRouter/index.d.ts +2 -0
  127. package/server/routes/appRouter/index.js +4 -0
  128. package/vitest.config.d.ts +2 -0
  129. package/vitest.setup.d.ts +1 -0
  130. package/{jest.setup.js → vitest.setup.js} +1 -1
  131. /package/{jest.setup.d.ts → server/db/methods.test.d.ts} +0 -0
@@ -0,0 +1,3 @@
1
+ import { type ApplyAppServiceSecretsParams } from '@appsemble/node-utils';
2
+ import { type RawAxiosRequestConfig } from 'axios';
3
+ export declare const applyAppServiceSecrets: ({ axiosConfig, }: ApplyAppServiceSecretsParams) => Promise<RawAxiosRequestConfig>;
@@ -0,0 +1,2 @@
1
+ export const applyAppServiceSecrets = ({ axiosConfig, }) => Promise.resolve(axiosConfig);
2
+ //# sourceMappingURL=applyAppServiceSecrets.js.map
@@ -0,0 +1 @@
1
+ export declare const checkRole: () => Promise<Record<string, any>>;
@@ -0,0 +1,2 @@
1
+ export const checkRole = () => Promise.resolve({});
2
+ //# sourceMappingURL=checkRole.js.map
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import { checkRole } from './checkRole.js';
2
+ describe('checkRole', () => {
3
+ it('should return a promise that resolves to an empty object', async () => {
4
+ const result = await checkRole();
5
+ expect(result).toStrictEqual({});
6
+ });
7
+ it('should return a promise', () => {
8
+ const result = checkRole();
9
+ expect(result instanceof Promise).toBe(true);
10
+ });
11
+ });
12
+ //# sourceMappingURL=checkRole.test.js.map
@@ -0,0 +1,2 @@
1
+ import { type AppAsset, type CreateAppAssetParams } from '@appsemble/node-utils';
2
+ export declare function createAppAsset({ context, payload, }: CreateAppAssetParams): Promise<AppAsset>;
@@ -0,0 +1,15 @@
1
+ import { writeFile } from 'node:fs/promises';
2
+ export async function createAppAsset({ context, payload, }) {
3
+ const { data, filename, mime, name } = payload;
4
+ const asset = {
5
+ id: name,
6
+ data,
7
+ mime,
8
+ name,
9
+ filename,
10
+ };
11
+ context.appAssets.push(asset);
12
+ await writeFile(filename, data);
13
+ return asset;
14
+ }
15
+ //# sourceMappingURL=createAppAsset.js.map
@@ -0,0 +1,3 @@
1
+ import { type CreateAppResourcesWithAssetsParams } from '@appsemble/node-utils';
2
+ import { type Resource as ResourceInterface } from '@appsemble/types';
3
+ export declare function createAppResourcesWithAssets({ app, context, preparedAssets, resourceType, resources, }: CreateAppResourcesWithAssetsParams): Promise<ResourceInterface[]>;
@@ -0,0 +1,18 @@
1
+ import { writeFile } from 'node:fs/promises';
2
+ import { Resource } from '../models/Resource.js';
3
+ export async function createAppResourcesWithAssets({ app, context, preparedAssets, resourceType, resources, }) {
4
+ const existingResources = await Resource.findAll({}, resourceType);
5
+ const firstIndex = existingResources.length;
6
+ const createdResources = await Resource.bulkCreate(resources.map((resource, index) => ({
7
+ id: firstIndex + index,
8
+ AppId: app.id,
9
+ ...resource,
10
+ })), resourceType);
11
+ const assetPromises = preparedAssets.map(async (asset) => {
12
+ context.appAssets.push(asset);
13
+ await writeFile(asset.filename, asset.data);
14
+ });
15
+ await Promise.all(assetPromises);
16
+ return createdResources;
17
+ }
18
+ //# sourceMappingURL=createAppResourcesWithAssets.js.map
@@ -0,0 +1,2 @@
1
+ import { type CreateSettingsParams } from '@appsemble/node-utils';
2
+ export declare function createSettings({ context, host, languages, }: CreateSettingsParams): Promise<[digest: string, script: string]>;
@@ -0,0 +1,15 @@
1
+ import { createSettings as createUtilsSettings, } from '@appsemble/node-utils';
2
+ export function createSettings({ context, host, languages, }) {
3
+ const { appBlocks, appsembleApp } = context;
4
+ return Promise.resolve(createUtilsSettings({
5
+ apiUrl: host,
6
+ blockManifests: appBlocks,
7
+ id: appsembleApp.id,
8
+ languages,
9
+ definition: appsembleApp.definition,
10
+ appUpdated: appsembleApp.$updated,
11
+ logins: [],
12
+ development: true,
13
+ }));
14
+ }
15
+ //# sourceMappingURL=createSettings.js.map
@@ -0,0 +1,2 @@
1
+ import { type CreateThemeParams, type Theme as ThemeInterface } from '@appsemble/node-utils';
2
+ export declare function createTheme({ css, ...theme }: CreateThemeParams): Promise<ThemeInterface>;
@@ -0,0 +1,5 @@
1
+ import { Theme } from '../models/Theme.js';
2
+ export function createTheme({ css, ...theme }) {
3
+ return Theme.create({ ...theme, css });
4
+ }
5
+ //# sourceMappingURL=createTheme.js.map
@@ -0,0 +1,2 @@
1
+ import { type DeleteAppAssetParams } from '@appsemble/node-utils';
2
+ export declare function deleteAppAsset({ app, id }: DeleteAppAssetParams): Promise<number>;
@@ -0,0 +1,15 @@
1
+ import { rm } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { logger } from '@appsemble/node-utils';
4
+ export async function deleteAppAsset({ app, id }) {
5
+ try {
6
+ await rm(join(process.cwd(), '/apps/', app.definition.name, '/assets/', id));
7
+ return 1;
8
+ }
9
+ catch (error) {
10
+ logger.error(`An error occurred while deleting asset ${id} of app ${app.definition.name}`);
11
+ logger.error(error);
12
+ return 0;
13
+ }
14
+ }
15
+ //# sourceMappingURL=deleteAppAsset.js.map
@@ -0,0 +1,2 @@
1
+ import { type DeleteAppResourceParams } from '@appsemble/node-utils';
2
+ export declare function deleteAppResource({ id, type }: DeleteAppResourceParams): Promise<void>;
@@ -0,0 +1,5 @@
1
+ import { Resource } from '../models/Resource.js';
2
+ export function deleteAppResource({ id, type }) {
3
+ return Resource.deleteOne(id, type);
4
+ }
5
+ //# sourceMappingURL=deleteAppResource.js.map
@@ -0,0 +1 @@
1
+ export declare const email: () => Promise<void>;
@@ -0,0 +1,2 @@
1
+ export const email = () => Promise.resolve();
2
+ //# sourceMappingURL=email.js.map
@@ -0,0 +1,3 @@
1
+ import { type GetAppParams } from '@appsemble/node-utils';
2
+ import { type App as AppInterface } from '@appsemble/types';
3
+ export declare function getApp({ context }: GetAppParams): Promise<AppInterface>;
@@ -0,0 +1,5 @@
1
+ export function getApp({ context }) {
2
+ const { appsembleApp } = context;
3
+ return Promise.resolve(appsembleApp);
4
+ }
5
+ //# sourceMappingURL=getApp.js.map
@@ -0,0 +1,2 @@
1
+ import { type AppAsset, type GetAppSubEntityParams } from '@appsemble/node-utils';
2
+ export declare function getAppAssets({ context }: GetAppSubEntityParams): Promise<AppAsset[]>;
@@ -0,0 +1,12 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ export function getAppAssets({ context }) {
3
+ const assetPromises = context.appAssets.map(async (asset) => {
4
+ const data = await readFile(asset.filename);
5
+ return {
6
+ ...asset,
7
+ data,
8
+ };
9
+ });
10
+ return Promise.all(assetPromises);
11
+ }
12
+ //# sourceMappingURL=getAppAssets.js.map
@@ -0,0 +1,2 @@
1
+ import { type AppBlockStyle as AppBlockStyleInterface, type GetAppBlockStylesParams } from '@appsemble/node-utils';
2
+ export declare function getAppBlockStyles({ context, name, }: GetAppBlockStylesParams): Promise<AppBlockStyleInterface[]>;
@@ -0,0 +1,26 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { parseBlockName } from '@appsemble/utils';
4
+ import globalCacheDir from 'global-cache-dir';
5
+ import { processCss } from '../../lib/processCss.js';
6
+ export async function getAppBlockStyles({ context, name, }) {
7
+ const { appBlocks, blockConfigs } = context;
8
+ const block = appBlocks.find((appBlock) => appBlock.name === name);
9
+ const filename = block.files.find((file) => file.endsWith('.css'));
10
+ const [organization, blockName] = parseBlockName(name);
11
+ if (filename) {
12
+ let stylePath;
13
+ if (existsSync(join(process.cwd(), 'blocks', blockName))) {
14
+ const blockConfig = blockConfigs.find((config) => config.name === name);
15
+ stylePath = `${blockConfig.dir}/${blockConfig.output}/${filename}`;
16
+ }
17
+ else {
18
+ const cacheDir = await globalCacheDir('appsemble');
19
+ stylePath = join(cacheDir, 'blocks', organization, blockName, block.version, 'assets', filename);
20
+ }
21
+ const style = await processCss(stylePath);
22
+ return [{ style }];
23
+ }
24
+ return [];
25
+ }
26
+ //# sourceMappingURL=getAppBlockStyles.js.map
@@ -0,0 +1,2 @@
1
+ import { type AppDetails, type GetAppParams } from '@appsemble/node-utils';
2
+ export declare function getAppDetails({ context }: GetAppParams): Promise<AppDetails>;
@@ -0,0 +1,8 @@
1
+ export function getAppDetails({ context }) {
2
+ const { appsembleApp } = context;
3
+ return Promise.resolve({
4
+ appPath: appsembleApp.path,
5
+ organizationId: appsembleApp.OrganizationId,
6
+ });
7
+ }
8
+ //# sourceMappingURL=getAppDetails.js.map
@@ -0,0 +1,3 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { type GetAppSubEntityParams } from '@appsemble/node-utils';
3
+ export declare function getAppIcon({ app }: GetAppSubEntityParams): Promise<Buffer>;
@@ -0,0 +1,6 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { readAsset } from '@appsemble/node-utils';
3
+ export function getAppIcon({ app }) {
4
+ return app.iconUrl ? readFile(app.iconUrl) : readAsset('appsemble.png');
5
+ }
6
+ //# sourceMappingURL=getAppIcon.js.map
@@ -0,0 +1,3 @@
1
+ import { type GetAppMembersParams } from '@appsemble/node-utils';
2
+ import { type AppMember } from '@appsemble/types';
3
+ export declare function getAppMembers({ context }: GetAppMembersParams): Promise<AppMember[]>;
@@ -0,0 +1,4 @@
1
+ export function getAppMembers({ context }) {
2
+ return Promise.resolve(context.appMembers);
3
+ }
4
+ //# sourceMappingURL=getAppMembers.js.map
@@ -0,0 +1,3 @@
1
+ import { type GetAppSubEntityParams } from '@appsemble/node-utils';
2
+ import { type AppMessages } from '@appsemble/types';
3
+ export declare function getAppMessages({ context }: GetAppSubEntityParams): Promise<AppMessages[]>;
@@ -0,0 +1,4 @@
1
+ export function getAppMessages({ context }) {
2
+ return Promise.resolve(context.appMessages);
3
+ }
4
+ //# sourceMappingURL=getAppMessages.js.map
@@ -0,0 +1,3 @@
1
+ import { type GetAppResourceParams } from '@appsemble/node-utils';
2
+ import { type Resource as ResourceInterface } from '@appsemble/types';
3
+ export declare function getAppResource({ id, type, }: GetAppResourceParams): Promise<ResourceInterface | null>;
@@ -0,0 +1,5 @@
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
@@ -0,0 +1,3 @@
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[] | []>;
@@ -0,0 +1,5 @@
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
@@ -0,0 +1,2 @@
1
+ import { type AppScreenshot as AppScreenShotInterface, type GetAppSubEntityParams } from '@appsemble/node-utils';
2
+ export declare function getAppScreenshots({ app, }: GetAppSubEntityParams): Promise<AppScreenShotInterface[]>;
@@ -0,0 +1,20 @@
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
@@ -0,0 +1,2 @@
1
+ import { type AppStyles, type GetAppSubEntityParams } from '@appsemble/node-utils';
2
+ export declare function getAppStyles({ context }: GetAppSubEntityParams): Promise<AppStyles>;
@@ -0,0 +1,7 @@
1
+ export function getAppStyles({ context }) {
2
+ return Promise.resolve({
3
+ coreStyle: context.appsembleApp.coreStyle,
4
+ sharedStyle: context.appsembleApp.sharedStyle,
5
+ });
6
+ }
7
+ //# sourceMappingURL=getAppStyles.js.map
@@ -0,0 +1,2 @@
1
+ import { type ExtendedTeam, type GetAppTeamsParams } from '@appsemble/node-utils';
2
+ export declare function getAppTeams({ context }: GetAppTeamsParams): Promise<ExtendedTeam[]>;
@@ -0,0 +1,4 @@
1
+ export function getAppTeams({ context }) {
2
+ return Promise.resolve(context.appTeams);
3
+ }
4
+ //# sourceMappingURL=getAppTeams.js.map
@@ -0,0 +1,2 @@
1
+ import { type GetAppSubEntityParams } from '@appsemble/node-utils';
2
+ export declare function getAppUrl({ context }: GetAppSubEntityParams): Promise<URL>;
@@ -0,0 +1,5 @@
1
+ export function getAppUrl({ context }) {
2
+ const url = new URL(context.appHost);
3
+ return Promise.resolve(url);
4
+ }
5
+ //# sourceMappingURL=getAppUrl.js.map
@@ -0,0 +1,3 @@
1
+ import { type GetAppUserInfoParams } from '@appsemble/node-utils';
2
+ import { type UserInfo } from '@appsemble/types';
3
+ export declare function getAppUserInfo({ context }: GetAppUserInfoParams): Promise<UserInfo>;
@@ -0,0 +1,4 @@
1
+ export function getAppUserInfo({ context }) {
2
+ return Promise.resolve(context.appUserInfo);
3
+ }
4
+ //# sourceMappingURL=getAppUserInfo.js.map
@@ -0,0 +1,2 @@
1
+ import { type BlockAsset as BlockAssetInterface, type GetBlockAssetParams } from '@appsemble/node-utils';
2
+ export declare function getBlockAsset({ context, filename, name, version, }: GetBlockAssetParams): Promise<BlockAssetInterface>;
@@ -0,0 +1,28 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { parseBlockName } from '@appsemble/utils';
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
+ const [organisation, blockName] = parseBlockName(name);
10
+ if (existsSync(join(process.cwd(), 'blocks', blockName))) {
11
+ const blockConfig = blockConfigs.find((block) => block.name === name);
12
+ const asset = await readFile(`${blockConfig.dir}/${blockConfig.output}/${filename}`);
13
+ const mime = lookup(filename) || '';
14
+ return {
15
+ content: asset,
16
+ mime,
17
+ };
18
+ }
19
+ const cacheDir = await globalCacheDir('appsemble');
20
+ const cachedAsset = join(cacheDir, 'blocks', organisation, blockName, version, 'assets', filename);
21
+ const asset = await readFile(cachedAsset);
22
+ const mime = lookup(filename) || '';
23
+ return {
24
+ content: asset,
25
+ mime,
26
+ };
27
+ }
28
+ //# sourceMappingURL=getBlockAsset.js.map
@@ -0,0 +1,2 @@
1
+ import { type GetBlocksAssetsPathsParams } from '@appsemble/node-utils';
2
+ export declare function getBlocksAssetsPaths({ context }: GetBlocksAssetsPathsParams): Promise<string[]>;
@@ -0,0 +1,8 @@
1
+ import { prefixBlockURL } from '@appsemble/utils';
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
@@ -0,0 +1,2 @@
1
+ import { type BlockMessages as BlockMessagesInterface, type GetBlockMessagesParams } from '@appsemble/node-utils';
2
+ export declare function getBlockMessages({ context, }: GetBlockMessagesParams): Promise<BlockMessagesInterface[]>;
@@ -0,0 +1,4 @@
1
+ export function getBlockMessages({ context, }) {
2
+ return Promise.resolve(context.appBlocks);
3
+ }
4
+ //# sourceMappingURL=getBlockMessages.js.map
@@ -0,0 +1,2 @@
1
+ import { type ContentSecurityPolicy, type GetCspParams } from '@appsemble/node-utils';
2
+ export declare function getCsp({ host, nonce, settingsHash }: GetCspParams): ContentSecurityPolicy;
@@ -0,0 +1,13 @@
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'", '*.vimeo.com', '*.youtube.com'],
11
+ };
12
+ }
13
+ //# sourceMappingURL=getCsp.js.map
@@ -0,0 +1 @@
1
+ export declare const getDbUpdated: () => Promise<Date | number>;
@@ -0,0 +1,2 @@
1
+ export const getDbUpdated = () => Promise.resolve(new Date());
2
+ //# sourceMappingURL=getDbUpdated.js.map
@@ -0,0 +1,2 @@
1
+ import { type GetHostParams } from '@appsemble/node-utils';
2
+ export declare function getHost({ context }: GetHostParams): string;
@@ -0,0 +1,5 @@
1
+ export function getHost({ context }) {
2
+ const { apiUrl } = context;
3
+ return apiUrl;
4
+ }
5
+ //# sourceMappingURL=getHost.js.map
@@ -0,0 +1,2 @@
1
+ import { type GetThemeParams, type Theme as ThemeInterface } from '@appsemble/node-utils';
2
+ export declare function getTheme({ theme }: GetThemeParams): Promise<ThemeInterface>;
@@ -0,0 +1,8 @@
1
+ import { Theme } from '../models/Theme.js';
2
+ export async function getTheme({ theme }) {
3
+ const persistedTheme = await Theme.findOne({ where: theme });
4
+ return {
5
+ css: persistedTheme ? persistedTheme.css : null,
6
+ };
7
+ }
8
+ //# sourceMappingURL=getTheme.js.map
@@ -0,0 +1,35 @@
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 './verifyResourceActionPermission.js';
20
+ export * from './createAppResourcesWithAssets.js';
21
+ export * from './updateAppResource.js';
22
+ export * from './deleteAppResource.js';
23
+ export * from './parseQuery.js';
24
+ export * from './checkRole.js';
25
+ export * from './getAppAssets.js';
26
+ export * from './createAppAsset.js';
27
+ export * from './getBlockMessages.js';
28
+ export * from './deleteAppAsset.js';
29
+ export * from './reloadUser.js';
30
+ export * from './email.js';
31
+ export * from './sendNotifications.js';
32
+ export * from './applyAppServiceSecrets.js';
33
+ export * from './getAppMembers.js';
34
+ export * from './getAppTeams.js';
35
+ export * from './getAppUserInfo.js';
@@ -0,0 +1,36 @@
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 './verifyResourceActionPermission.js';
20
+ export * from './createAppResourcesWithAssets.js';
21
+ export * from './updateAppResource.js';
22
+ export * from './deleteAppResource.js';
23
+ export * from './parseQuery.js';
24
+ export * from './checkRole.js';
25
+ export * from './getAppAssets.js';
26
+ export * from './createAppAsset.js';
27
+ export * from './getBlockMessages.js';
28
+ export * from './deleteAppAsset.js';
29
+ export * from './reloadUser.js';
30
+ export * from './email.js';
31
+ export * from './sendNotifications.js';
32
+ export * from './applyAppServiceSecrets.js';
33
+ export * from './getAppMembers.js';
34
+ export * from './getAppTeams.js';
35
+ export * from './getAppUserInfo.js';
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ import { type Options } from '@appsemble/node-utils';
2
+ export declare const options: Options;
@@ -0,0 +1,39 @@
1
+ import { applyAppServiceSecrets, checkRole, createAppAsset, createAppResourcesWithAssets, createSettings, createTheme, deleteAppAsset, deleteAppResource, email, getApp, getAppAssets, getAppBlockStyles, getAppDetails, getAppIcon, getAppMembers, getAppMessages, getAppResource, getAppResources, getAppScreenshots, getAppStyles, getAppTeams, getAppUrl, getAppUserInfo, getBlockAsset, getBlockMessages, getBlocksAssetsPaths, getCsp, getDbUpdated, getHost, getTheme, parseQuery, reloadUser, sendNotifications, updateAppResource, verifyResourceActionPermission, } from './index.js';
2
+ export const options = {
3
+ applyAppServiceSecrets,
4
+ checkRole,
5
+ createAppAsset,
6
+ createAppResourcesWithAssets,
7
+ createSettings,
8
+ createTheme,
9
+ deleteAppAsset,
10
+ deleteAppResource,
11
+ email,
12
+ getApp,
13
+ getAppAssets,
14
+ getAppBlockStyles,
15
+ getAppDetails,
16
+ getAppIcon,
17
+ getAppMembers,
18
+ getAppMessages,
19
+ getAppResource,
20
+ getAppResources,
21
+ getAppScreenshots,
22
+ getAppStyles,
23
+ getAppTeams,
24
+ getAppUrl,
25
+ getAppUserInfo,
26
+ getBlockAsset,
27
+ getBlockMessages,
28
+ getBlocksAssetsPaths,
29
+ getCsp,
30
+ getDbUpdated,
31
+ getHost,
32
+ getTheme,
33
+ parseQuery,
34
+ reloadUser,
35
+ sendNotifications,
36
+ updateAppResource,
37
+ verifyResourceActionPermission,
38
+ };
39
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1,2 @@
1
+ import { type ParsedQuery, type ParseQueryParams } from '@appsemble/node-utils';
2
+ export declare function parseQuery({ $filter, $orderby }: ParseQueryParams): ParsedQuery;