@hubspot/project-parsing-lib 0.2.0-beta.1 → 0.2.0-experimental.0

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 (59) hide show
  1. package/README.md +4 -35
  2. package/package.json +64 -22
  3. package/src/exports/constants.d.ts +1 -0
  4. package/src/exports/constants.js +1 -0
  5. package/src/exports/migrate.d.ts +1 -0
  6. package/src/exports/migrate.js +1 -0
  7. package/src/exports/profiles.d.ts +3 -0
  8. package/src/exports/profiles.js +2 -0
  9. package/src/exports/projects.d.ts +3 -0
  10. package/src/exports/projects.js +2 -0
  11. package/src/exports/schema.d.ts +2 -0
  12. package/src/exports/schema.js +1 -0
  13. package/src/exports/themes.d.ts +2 -0
  14. package/src/exports/themes.js +1 -0
  15. package/src/exports/transform.d.ts +2 -0
  16. package/src/exports/transform.js +1 -0
  17. package/src/exports/translate.d.ts +3 -0
  18. package/src/exports/translate.js +2 -0
  19. package/src/exports/uid.d.ts +1 -0
  20. package/src/exports/uid.js +1 -0
  21. package/src/exports/workspaces.d.ts +2 -0
  22. package/src/exports/workspaces.js +1 -0
  23. package/src/lang/copy.d.ts +7 -1
  24. package/src/lang/copy.js +29 -33
  25. package/src/lib/constants.d.ts +44 -28
  26. package/src/lib/constants.js +151 -121
  27. package/src/lib/errors.d.ts +4 -3
  28. package/src/lib/errors.js +62 -38
  29. package/src/lib/files.d.ts +10 -1
  30. package/src/lib/files.js +51 -40
  31. package/src/lib/localDev.d.ts +4 -0
  32. package/src/lib/localDev.js +72 -0
  33. package/src/lib/migrate.js +32 -42
  34. package/src/lib/migrateThemes.d.ts +25 -0
  35. package/src/lib/migrateThemes.js +120 -0
  36. package/src/lib/minimalArboristTree.d.ts +118 -0
  37. package/src/lib/minimalArboristTree.js +32 -0
  38. package/src/lib/profiles.d.ts +6 -1
  39. package/src/lib/profiles.js +95 -40
  40. package/src/lib/project.d.ts +13 -0
  41. package/src/lib/project.js +29 -0
  42. package/src/lib/schemas.d.ts +2 -2
  43. package/src/lib/schemas.js +11 -11
  44. package/src/lib/transform.d.ts +4 -2
  45. package/src/lib/transform.js +100 -53
  46. package/src/lib/translate.d.ts +3 -0
  47. package/src/lib/translate.js +52 -0
  48. package/src/lib/types.d.ts +28 -4
  49. package/src/lib/types.js +1 -2
  50. package/src/lib/uid.d.ts +2 -0
  51. package/src/lib/uid.js +14 -9
  52. package/src/lib/utils.d.ts +3 -0
  53. package/src/lib/utils.js +16 -0
  54. package/src/lib/validation.d.ts +4 -4
  55. package/src/lib/validation.js +61 -53
  56. package/src/lib/workspaces.d.ts +68 -0
  57. package/src/lib/workspaces.js +282 -0
  58. package/src/index.d.ts +0 -18
  59. package/src/index.js +0 -86
package/README.md CHANGED
@@ -1,38 +1,7 @@
1
- # project-translation-layer
1
+ # @hubspot/project-parsing-lib
2
2
 
3
- ## Description
4
- This project is a translation layer that can be used to translate a project to its immediate representation prior to being uploaded
5
- to the project v2 service.
3
+ A parsing library for converting HubSpot project directory structures to their intermediate representation (IR).
6
4
 
7
- ## Flow Chart
5
+ ## Description
8
6
 
9
- ```mermaid
10
- sequenceDiagram
11
- autonumber
12
-
13
- actor dev as External Developer
14
- participant cli as HS CLI
15
- participant ppl as Project Parsing Library
16
- participant pv3 as Projects v3
17
-
18
- dev ->> cli: Developer runs `hs project upload`
19
- cli ->> cli: Loads project config
20
- cli ->> ppl: CLI calls `translate` function with the values required from the project config
21
- ppl ->> ppl: Walks the project directory looking for the hsmeta files
22
- loop For each hsmeta file
23
- ppl ->> ppl: Checks if file is valid JSON
24
- ppl ->> ppl: Checks if the file is in a valid location
25
- ppl ->> ppl: Generates the IR
26
- end
27
- ppl ->> pv3: Fetch the schemas used to validate the generated IR
28
- loop For each hsmeta file
29
- ppl ->> ppl: Validate the IR config block against the schema
30
- end
31
- alt Validation successful for all schemas
32
- ppl ->> cli: Pass the IR back to the CLI
33
- cli ->> cli: Zip the project contents
34
- cli ->> pv3: Upload the project and the IR
35
- else Validation failed for 1+ schema(s)
36
- ppl ->> cli: Log the error and exit the upload
37
- end
38
- ```
7
+ This library provides functionality to parse HubSpot project structures and convert them into an intermediate representation that can be uploaded to HubSpot. It walks through project directories, locates `.hsmeta.json` files, validates them, and generates the IR needed for project uploads.
package/package.json CHANGED
@@ -1,44 +1,86 @@
1
1
  {
2
2
  "name": "@hubspot/project-parsing-lib",
3
- "version": "0.2.0-beta.1",
3
+ "version": "0.2.0-experimental.0",
4
4
  "description": "Parsing library for converting projects directory structures to their intermediate representation",
5
5
  "license": "Apache-2.0",
6
- "main": "src/index.js",
6
+ "type": "module",
7
+ "exports": {
8
+ "./constants": {
9
+ "import": "./src/exports/constants.js",
10
+ "types": "./src/exports/constants.d.ts"
11
+ },
12
+ "./migrate": {
13
+ "import": "./src/exports/migrate.js",
14
+ "types": "./src/exports/migrate.d.ts"
15
+ },
16
+ "./profiles": {
17
+ "import": "./src/exports/profiles.js",
18
+ "types": "./src/exports/profiles.d.ts"
19
+ },
20
+ "./projects": {
21
+ "import": "./src/exports/projects.js",
22
+ "types": "./src/exports/projects.d.ts"
23
+ },
24
+ "./schema": {
25
+ "import": "./src/exports/schema.js",
26
+ "types": "./src/exports/schema.d.ts"
27
+ },
28
+ "./themes": {
29
+ "import": "./src/exports/themes.js",
30
+ "types": "./src/exports/themes.d.ts"
31
+ },
32
+ "./transform": {
33
+ "import": "./src/exports/transform.js",
34
+ "types": "./src/exports/transform.d.ts"
35
+ },
36
+ "./translate": {
37
+ "import": "./src/exports/translate.js",
38
+ "types": "./src/exports/translate.d.ts"
39
+ },
40
+ "./uid": {
41
+ "import": "./src/exports/uid.js",
42
+ "types": "./src/exports/uid.d.ts"
43
+ },
44
+ "./workspaces": {
45
+ "import": "./src/exports/workspaces.js",
46
+ "types": "./src/exports/workspaces.d.ts"
47
+ }
48
+ },
7
49
  "devDependencies": {
8
- "@hubspot/local-dev-lib": "^3.1.0",
50
+ "@hubspot/npm-scripts": "0.0.6",
9
51
  "@inquirer/prompts": "^7.1.0",
10
- "@types/jest": "^29.5.14",
52
+ "@types/node": "^24.9.0",
53
+ "@types/npm-packlist": "7.0.3",
11
54
  "@types/semver": "^7.5.8",
12
- "@typescript-eslint/eslint-plugin": "^8.11.0",
13
- "@typescript-eslint/parser": "^8.11.0",
14
- "eslint": "^8.56.0",
55
+ "@typescript-eslint/eslint-plugin": "8.54.0",
56
+ "@typescript-eslint/parser": "8.54.0",
57
+ "eslint": "^9.38.0",
15
58
  "eslint-plugin-import": "^2.31.0",
16
59
  "husky": "^9.1.7",
17
- "jest": "^29.5.0",
18
60
  "lint-staged": "^10.5.4",
19
- "prettier": "^1.19.1",
61
+ "prettier": "^3.3.0",
20
62
  "semver": "^7.6.3",
21
- "ts-jest": "^29.2.5",
22
- "ts-node": "^10.9.2",
23
- "typescript": "^5.6.2"
63
+ "tsx": "^4.20.5",
64
+ "typescript": "^5.6.2",
65
+ "vitest": "^2.1.9"
24
66
  },
25
67
  "dependencies": {
26
- "ajv": "8.17.1",
27
- "ajv-formats": "3.0.1"
28
- },
29
- "peerDependencies": {
30
- "@hubspot/local-dev-lib": "^3.1.0"
68
+ "@hubspot/local-dev-lib": "4.0.4",
69
+ "ajv": "8.18.0",
70
+ "ajv-formats": "3.0.1",
71
+ "glob": "13.0.0",
72
+ "npm-packlist": "8.0.1"
31
73
  },
32
74
  "scripts": {
33
- "build": "ts-node ./scripts/build.ts",
75
+ "build": "tsx ./scripts/build.ts",
34
76
  "lint": "echo 'Linting is disabled for Blazar'",
35
77
  "lint:local": "eslint --max-warnings=0 . && prettier ./src/** --check",
36
78
  "local-dev": "yarn build && cd dist && yarn link && cd .. && tsc --watch --rootDir . --outdir dist",
79
+ "local-link": "hubspot-linking",
37
80
  "prettier:write": "prettier ./src/** --write",
38
- "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ./node_modules/.bin/jest",
39
- "release": "yarn ts-node ./scripts/release.ts release",
40
- "acceptance-test": "yarn --cwd=./acceptance-tests test",
41
- "update-north-star": "git submodule update --remote --merge"
81
+ "test": "vitest run",
82
+ "release": "tsx ./scripts/release.ts release",
83
+ "acceptance-test": "yarn --cwd=./acceptance-tests test"
42
84
  },
43
85
  "engines": {
44
86
  "node": ">=18"
@@ -0,0 +1 @@
1
+ export * from '../lib/constants.js';
@@ -0,0 +1 @@
1
+ export * from '../lib/constants.js';
@@ -0,0 +1 @@
1
+ export { migrate } from '../lib/migrate.js';
@@ -0,0 +1 @@
1
+ export { migrate } from '../lib/migrate.js';
@@ -0,0 +1,3 @@
1
+ export { getAllHsProfiles, loadHsProfileFile } from '../lib/files.js';
2
+ export { getHsProfileFilename, validateProfileVariables, } from '../lib/profiles.js';
3
+ export type { HsProfileFile, HSProfileVariables } from '../lib/types.js';
@@ -0,0 +1,2 @@
1
+ export { getAllHsProfiles, loadHsProfileFile } from '../lib/files.js';
2
+ export { getHsProfileFilename, validateProfileVariables, } from '../lib/profiles.js';
@@ -0,0 +1,3 @@
1
+ export { getProjectMetadata } from '../lib/project.js';
2
+ export { projectContainsHsMetaFiles } from '../lib/files.js';
3
+ export type { ProjectMetadata } from '../lib/project.js';
@@ -0,0 +1,2 @@
1
+ export { getProjectMetadata } from '../lib/project.js';
2
+ export { projectContainsHsMetaFiles } from '../lib/files.js';
@@ -0,0 +1,2 @@
1
+ export { getIntermediateRepresentationSchema } from '../lib/schemas.js';
2
+ export type { AnySchema } from 'ajv';
@@ -0,0 +1 @@
1
+ export { getIntermediateRepresentationSchema } from '../lib/schemas.js';
@@ -0,0 +1,2 @@
1
+ export { migrateThemes, getProjectThemeDetails } from '../lib/migrateThemes.js';
2
+ export type { ThemeDetails, ReactThemeDetails, ProjectThemeDetails, } from '../lib/migrateThemes.js';
@@ -0,0 +1 @@
1
+ export { migrateThemes, getProjectThemeDetails } from '../lib/migrateThemes.js';
@@ -0,0 +1,2 @@
1
+ export { mapToUserFriendlyName, mapToUserFacingType, mapToInternalType, } from '../lib/transform.js';
2
+ export type { Dependencies } from '../lib/types.js';
@@ -0,0 +1 @@
1
+ export { mapToUserFriendlyName, mapToUserFacingType, mapToInternalType, } from '../lib/transform.js';
@@ -0,0 +1,3 @@
1
+ export { translate, translateForLocalDev } from '../lib/translate.js';
2
+ export { isTranslationError, type TranslationError } from '../lib/errors.js';
3
+ export type { IntermediateRepresentation, IntermediateRepresentationLocalDev, IntermediateRepresentationNodeLocalDev, IntermediateRepresentationNode, TranslationContext, TranslationOptions, TranslationOptionsLocalDev, } from '../lib/types.js';
@@ -0,0 +1,2 @@
1
+ export { translate, translateForLocalDev } from '../lib/translate.js';
2
+ export { isTranslationError } from '../lib/errors.js';
@@ -0,0 +1 @@
1
+ export { validateUid, coerceToValidUid } from '../lib/uid.js';
@@ -0,0 +1 @@
1
+ export { validateUid, coerceToValidUid } from '../lib/uid.js';
@@ -0,0 +1,2 @@
1
+ export { findAndParsePackageJsonFiles, resolveWorkspaceDirectories, collectWorkspaceDirectories, collectFileDependencies, getPackableFiles, WorkspaceResolutionError, FileDependencyResolutionError, } from '../lib/workspaces.js';
2
+ export type { ParsedPackageJson, WorkspaceMapping, FileDependencyMapping, } from '../lib/workspaces.js';
@@ -0,0 +1 @@
1
+ export { findAndParsePackageJsonFiles, resolveWorkspaceDirectories, collectWorkspaceDirectories, collectFileDependencies, getPackableFiles, WorkspaceResolutionError, FileDependencyResolutionError, } from '../lib/workspaces.js';
@@ -1,10 +1,12 @@
1
- import { ComponentMetadata } from '../lib/constants';
1
+ import { ComponentMetadata } from '../lib/constants.js';
2
2
  export declare const errorMessages: {
3
3
  api: {
4
4
  failedToFetchSchemas: string;
5
+ failedToFetchSchemas403: string;
5
6
  accountIdIsRequiredToFetchSchemas: string;
6
7
  };
7
8
  project: {
9
+ mustHaveAppComponent: (componentType: string) => string;
8
10
  noHsMetaFiles: string;
9
11
  failedToTranslateProject: string;
10
12
  duplicateUid: (uid: string, files: string[]) => string;
@@ -30,8 +32,12 @@ export declare const errorMessages: {
30
32
  unsupportedType: (type: string) => string;
31
33
  errorWithField: (field: string, error: string | undefined) => string;
32
34
  invalidJson: string;
35
+ unexpectedToplevelFields: (unexpectedFields: string) => string;
33
36
  wrongDirectoryForComponent: (directory: string, componentType: string, componentMetadata: ComponentMetadata, correctDir: string) => string;
34
37
  };
38
+ migrateThemes: {
39
+ rootReactThemeNotSupported: string;
40
+ };
35
41
  };
36
42
  export declare function getInvalidJsonError(): string;
37
43
  export declare function getMissingTypeError(): string;
package/src/lang/copy.js CHANGED
@@ -1,26 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.logMessages = exports.errorMessages = void 0;
4
- exports.getInvalidJsonError = getInvalidJsonError;
5
- exports.getMissingTypeError = getMissingTypeError;
6
- exports.getMissingConfigError = getMissingConfigError;
7
- exports.getMissingAccountIdError = getMissingAccountIdError;
8
- exports.getMissingRequiredFieldError = getMissingRequiredFieldError;
9
- exports.getFailedToFetchSchemasError = getFailedToFetchSchemasError;
10
- exports.getUnsupportedTypeError = getUnsupportedTypeError;
11
- const constants_1 = require("../lib/constants");
12
- const transform_1 = require("../lib/transform");
13
- exports.errorMessages = {
1
+ import { APP_FUNCTIONS_KEY, APP_KEY, Components, PACKAGE_JSON, } from '../lib/constants.js';
2
+ import { mapToUserFacingType } from '../lib/transform.js';
3
+ export const errorMessages = {
14
4
  api: {
15
- failedToFetchSchemas: 'Failed to fetch schemas',
16
- accountIdIsRequiredToFetchSchemas: 'Account id is required to fetch schemas',
5
+ failedToFetchSchemas: 'Failed to fetch component schemas',
6
+ failedToFetchSchemas403: 'Failed to fetch component schemas. Please verify that your personal access key provides access to developer projects.',
7
+ accountIdIsRequiredToFetchSchemas: 'Account id is required to fetch component schemas',
17
8
  },
18
9
  project: {
10
+ mustHaveAppComponent: (componentType) => `This '${componentType}' component must be a child of the '${APP_KEY}' component. No *-hsmeta.json files were found with type '${APP_KEY}'`,
19
11
  noHsMetaFiles: 'No *-hsmeta.json files found in the current directory. Please make sure you are inside the correct project directory.',
20
12
  failedToTranslateProject: 'Project validation failed',
21
13
  duplicateUid: (uid, files) => `Duplicate uid '${uid}' found in:\n- ${files.join('\n- ')}`,
22
14
  duplicateComponent: (componentType) => `Only one ${componentType} component is allowed`,
23
- noPackageJsonForServerless: (appFunctionsPackageFile) => `${appFunctionsPackageFile} does not exist. ${constants_1.Components[constants_1.AppFunctionsKey].userFriendlyName} requires a ${constants_1.packageJson} file to exist in this location`,
15
+ noPackageJsonForServerless: (appFunctionsPackageFile) => `${appFunctionsPackageFile} does not exist. ${Components[APP_FUNCTIONS_KEY].userFriendlyName} requires a ${PACKAGE_JSON} file to exist in this location`,
24
16
  fileContentMissingFor: (file) => `File content is missing for ${file}`,
25
17
  },
26
18
  profile: {
@@ -38,34 +30,38 @@ exports.errorMessages = {
38
30
  uidTooLong: `'uid' must be 64 characters or less`,
39
31
  missingType: `Missing required field: 'type'`,
40
32
  missingConfig: `Missing required field: 'config'`,
41
- unsupportedType: (type) => `Unsupported type: ${(0, transform_1.mapToUserFacingType)(type)}`,
42
- errorWithField: (field, error) => `Error with ${field}: ${error || 'Unknown error'}`,
33
+ unsupportedType: (type) => `Unsupported type: ${mapToUserFacingType(type)}`,
34
+ errorWithField: (field, error) => `${field}: ${error || 'Unknown error'}`,
43
35
  invalidJson: 'Invalid JSON',
36
+ unexpectedToplevelFields: (unexpectedFields) => `Unexpected top-level properties found: ${unexpectedFields}`,
44
37
  wrongDirectoryForComponent: (directory, componentType, componentMetadata, correctDir) => `The directory '${directory}' is incorrect for type '${componentType}'. ${componentMetadata.userFriendlyName} ${componentMetadata.userFriendlyTypePlural} should only be placed in the '${correctDir}' directory`,
45
38
  },
39
+ migrateThemes: {
40
+ rootReactThemeNotSupported: 'Migrating themes that live at the root of the project src directory is not supported. Please move the theme to a subdirectory.',
41
+ },
46
42
  };
47
- function getInvalidJsonError() {
48
- return exports.errorMessages.validation.invalidJson;
43
+ export function getInvalidJsonError() {
44
+ return errorMessages.validation.invalidJson;
49
45
  }
50
- function getMissingTypeError() {
51
- return exports.errorMessages.validation.missingType;
46
+ export function getMissingTypeError() {
47
+ return errorMessages.validation.missingType;
52
48
  }
53
- function getMissingConfigError() {
54
- return exports.errorMessages.validation.missingConfig;
49
+ export function getMissingConfigError() {
50
+ return errorMessages.validation.missingConfig;
55
51
  }
56
- function getMissingAccountIdError() {
57
- return exports.errorMessages.api.accountIdIsRequiredToFetchSchemas;
52
+ export function getMissingAccountIdError() {
53
+ return errorMessages.api.accountIdIsRequiredToFetchSchemas;
58
54
  }
59
- function getMissingRequiredFieldError(field) {
60
- return exports.errorMessages.validation.missingRequiredField(field);
55
+ export function getMissingRequiredFieldError(field) {
56
+ return errorMessages.validation.missingRequiredField(field);
61
57
  }
62
- function getFailedToFetchSchemasError() {
63
- return exports.errorMessages.api.failedToFetchSchemas;
58
+ export function getFailedToFetchSchemasError() {
59
+ return errorMessages.api.failedToFetchSchemas;
64
60
  }
65
- function getUnsupportedTypeError(type) {
66
- return exports.errorMessages.validation.unsupportedType(type);
61
+ export function getUnsupportedTypeError(type) {
62
+ return errorMessages.validation.unsupportedType(type);
67
63
  }
68
- exports.logMessages = {
64
+ export const logMessages = {
69
65
  files: {
70
66
  skippingPath: (path) => `Skipping ${path} as it is not in a valid directory`,
71
67
  },
@@ -1,19 +1,26 @@
1
- export declare const AppKey = "app";
2
- export declare const ThemeKey = "theme";
3
- export declare const AppFunctionsKey = "app-function";
4
- export declare const AppObjectKey = "app-object";
5
- export declare const AppObjectAssociationKey = "app-object-association";
6
- export declare const CallingKey = "calling";
7
- export declare const CardsKey = "card";
8
- export declare const SettingsKey = "settings";
9
- export declare const MarketingEventsKey = "marketing-event";
10
- export declare const MediaBridgeKey = "media-bridge";
11
- export declare const TimelineEventsKey = "timeline-event";
12
- export declare const VideoConferencingKey = "video-conferencing";
13
- export declare const WebhooksKey = "webhooks";
14
- export declare const WorkflowActionsKey = "workflow-action";
15
- export declare const AppFunctionsPackageKey = "serverless-package";
16
- export declare const AutoGeneratedComponentTypes: string[];
1
+ import { Components as ComponentsTopLevel } from './types.js';
2
+ export declare const APP_KEY = "app";
3
+ export declare const THEME_KEY = "theme";
4
+ export declare const CMS_ASSETS_KEY = "cms-assets";
5
+ export declare const APP_EVENTS_KEY = "app-event";
6
+ export declare const APP_FUNCTIONS_KEY = "app-function";
7
+ export declare const PAGES_KEY = "page";
8
+ export declare const APP_OBJECT_KEY = "app-object";
9
+ export declare const APP_OBJECT_ASSOCIATION_KEY = "app-object-association";
10
+ export declare const CALLING_KEY = "calling";
11
+ export declare const CARDS_KEY = "card";
12
+ export declare const SCIM_KEY = "scim";
13
+ export declare const MARKETING_EVENTS_KEY = "marketing-event";
14
+ export declare const MCP_REGISTRY_KEY = "mcp-registry";
15
+ export declare const MEDIA_BRIDGE_KEY = "media-bridge";
16
+ export declare const SETTINGS_KEY = "settings";
17
+ export declare const TELEMETRY_KEY = "telemetry";
18
+ export declare const VIDEO_CONFERENCING_KEY = "video-conferencing";
19
+ export declare const WEBHOOKS_KEY = "webhooks";
20
+ export declare const WEBHOOKS_JOURNAL_KEY = "webhooks-journal";
21
+ export declare const WORKFLOW_ACTIONS_KEY = "workflow-action";
22
+ export declare const APP_FUNCTIONS_PACKAGE_KEY = "serverless-package";
23
+ export declare const AUTO_GENERATED_COMPONENT_TYPES: string[];
17
24
  export interface ComponentMetadata {
18
25
  dir: string;
19
26
  isToplevel: boolean;
@@ -24,18 +31,27 @@ export interface ComponentMetadata {
24
31
  singularComponent?: boolean;
25
32
  }
26
33
  export declare const Components: Record<string, ComponentMetadata>;
27
- export declare const userFacingToInternalType: Record<string, string>;
28
- export declare const internalTypeToUserFacing: Record<string, string>;
29
- export declare const metafileExtension = "-hsmeta.json";
30
- export declare const profileFilePrefix = "hsprofile";
31
- export declare const hsProjectJsonFilename = "hsproject.json";
32
- export declare const packageJson = "package.json";
33
- export declare const packageLockJson = "package-lock.json";
34
- export declare const allowedAppSubComponentsDirs: string[];
35
- export declare const allowedThemeSubComponentsDirs: string[];
36
- export declare const ProjectStructure: {
34
+ export declare const USER_FACING_TO_INTERNAL_TYPE: Record<string, string>;
35
+ export declare const INTERNAL_TYPE_TO_USER_FACING: Record<string, string>;
36
+ export declare const METAFILE_EXTENSION = "-hsmeta.json";
37
+ export declare const PROFILE_FILE_PREFIX = "hsprofile";
38
+ export declare const HS_PROJECT_JSON_FILENAME = "hsproject.json";
39
+ export declare const PACKAGE_JSON = "package.json";
40
+ export declare const PACKAGE_LOCK_JSON = "package-lock.json";
41
+ export declare const ALLOWED_APP_SUB_COMPONENTS_DIRS: string[];
42
+ export declare const ALLOWED_THEME_SUB_COMPONENTS_DIRS: string[];
43
+ export declare const ALLOWED_CMS_ASSET_SUB_COMPONENT_DIRS: string[];
44
+ export declare const PROJECT_STRUCTURE: {
37
45
  readonly app: string[];
38
46
  readonly theme: string[];
47
+ readonly "cms-assets": string[];
39
48
  };
40
- export declare const allowedComponentDirectories: string[];
41
- export declare const allowedSubComponentDirectories: string[];
49
+ export declare const ALLOWED_COMPONENT_DIRECTORIES: string[];
50
+ export declare const ALLOWED_SUB_COMPONENT_DIRECTORIES: string[];
51
+ export declare const PROFILE_VARIABLE_TYPES: {
52
+ readonly PROFILE_INT: "PROFILE_INT";
53
+ readonly PROFILE_LONG: "PROFILE_LONG";
54
+ readonly PROFILE_STRING: "PROFILE_STRING";
55
+ readonly PROFILE_BOOLEAN: "PROFILE_BOOLEAN";
56
+ };
57
+ export declare const ALLOWED_TOP_LEVEL_FIELDS: Set<keyof ComponentsTopLevel>;