@hubspot/project-parsing-lib 0.2.1 → 0.2.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.
- package/package.json +2 -2
- package/src/lib/constants.d.ts +1 -0
- package/src/lib/constants.js +11 -3
- package/src/lib/files.d.ts +8 -0
- package/src/lib/files.js +5 -2
- package/src/lib/project.d.ts +13 -0
- package/src/lib/project.js +31 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hubspot/project-parsing-lib",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Parsing library for converting projects directory structures to their intermediate representation",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"release": "yarn ts-node ./scripts/release.ts release",
|
|
40
40
|
"reset-north-star": "git submodule update --init",
|
|
41
41
|
"acceptance-test": "yarn --cwd=./acceptance-tests test",
|
|
42
|
-
"update-north-star": "git submodule update --remote
|
|
42
|
+
"update-north-star": "git submodule update --remote"
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
|
45
45
|
"node": ">=18"
|
package/src/lib/constants.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare const AppObjectKey = "app-object";
|
|
|
5
5
|
export declare const AppObjectAssociationKey = "app-object-association";
|
|
6
6
|
export declare const CallingKey = "calling";
|
|
7
7
|
export declare const CardsKey = "card";
|
|
8
|
+
export declare const SCIMKey = "scim";
|
|
8
9
|
export declare const SettingsKey = "settings";
|
|
9
10
|
export declare const MarketingEventsKey = "marketing-event";
|
|
10
11
|
export declare const MediaBridgeKey = "media-bridge";
|
package/src/lib/constants.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.allowedSubComponentDirectories = exports.allowedComponentDirectories = exports.ProjectStructure = exports.allowedThemeSubComponentsDirs = exports.allowedAppSubComponentsDirs = exports.packageLockJson = exports.packageJson = exports.hsProjectJsonFilename = exports.profileFilePrefix = exports.metafileExtension = exports.internalTypeToUserFacing = exports.userFacingToInternalType = exports.Components = exports.AutoGeneratedComponentTypes = exports.AppFunctionsPackageKey = exports.WorkflowActionsKey = exports.WebhooksKey = exports.VideoConferencingKey = exports.TimelineEventsKey = exports.MediaBridgeKey = exports.MarketingEventsKey = exports.SettingsKey = exports.CardsKey = exports.CallingKey = exports.AppObjectAssociationKey = exports.AppObjectKey = exports.AppFunctionsKey = exports.ThemeKey = exports.AppKey = void 0;
|
|
36
|
+
exports.allowedSubComponentDirectories = exports.allowedComponentDirectories = exports.ProjectStructure = exports.allowedThemeSubComponentsDirs = exports.allowedAppSubComponentsDirs = exports.packageLockJson = exports.packageJson = exports.hsProjectJsonFilename = exports.profileFilePrefix = exports.metafileExtension = exports.internalTypeToUserFacing = exports.userFacingToInternalType = exports.Components = exports.AutoGeneratedComponentTypes = exports.AppFunctionsPackageKey = exports.WorkflowActionsKey = exports.WebhooksKey = exports.VideoConferencingKey = exports.TimelineEventsKey = exports.MediaBridgeKey = exports.MarketingEventsKey = exports.SettingsKey = exports.SCIMKey = exports.CardsKey = exports.CallingKey = exports.AppObjectAssociationKey = exports.AppObjectKey = exports.AppFunctionsKey = exports.ThemeKey = exports.AppKey = void 0;
|
|
37
37
|
// Top Level Component types
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
39
|
// Component types
|
|
@@ -45,6 +45,7 @@ exports.AppObjectKey = 'app-object';
|
|
|
45
45
|
exports.AppObjectAssociationKey = 'app-object-association';
|
|
46
46
|
exports.CallingKey = 'calling';
|
|
47
47
|
exports.CardsKey = 'card';
|
|
48
|
+
exports.SCIMKey = 'scim';
|
|
48
49
|
exports.SettingsKey = 'settings';
|
|
49
50
|
exports.MarketingEventsKey = 'marketing-event';
|
|
50
51
|
exports.MediaBridgeKey = 'media-bridge';
|
|
@@ -108,6 +109,13 @@ exports.Components = {
|
|
|
108
109
|
userFriendlyName: 'App Function',
|
|
109
110
|
...SubComponentFields,
|
|
110
111
|
},
|
|
112
|
+
[exports.SCIMKey]: {
|
|
113
|
+
dir: exports.SCIMKey,
|
|
114
|
+
parentComponent: exports.AppKey,
|
|
115
|
+
userFriendlyName: 'SCIM',
|
|
116
|
+
singularComponent: true,
|
|
117
|
+
...SubComponentFields,
|
|
118
|
+
},
|
|
111
119
|
[exports.SettingsKey]: {
|
|
112
120
|
dir: 'settings',
|
|
113
121
|
parentComponent: exports.AppKey,
|
|
@@ -153,9 +161,9 @@ exports.Components = {
|
|
|
153
161
|
...SubComponentFields,
|
|
154
162
|
},
|
|
155
163
|
};
|
|
156
|
-
const internalAppKey = 'APPLICATION';
|
|
157
164
|
exports.userFacingToInternalType = {
|
|
158
|
-
[exports.AppKey]:
|
|
165
|
+
[exports.AppKey]: 'APPLICATION',
|
|
166
|
+
[exports.SCIMKey]: 'SCIM_INTEGRATION',
|
|
159
167
|
};
|
|
160
168
|
exports.internalTypeToUserFacing = Object.fromEntries(Object.entries(exports.userFacingToInternalType).map(([key, value]) => [value, key]));
|
|
161
169
|
exports.metafileExtension = '-hsmeta.json';
|
package/src/lib/files.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { FileParseResult, TranslationContext, HsProfileFile } from './types';
|
|
2
|
+
type MetaFileLocation = {
|
|
3
|
+
file: string;
|
|
4
|
+
parentDirectory?: string;
|
|
5
|
+
};
|
|
2
6
|
export declare function loadHsProfileFile(projectSourceDir: string, profile: string): HsProfileFile;
|
|
3
7
|
export declare function getAllHsProfiles(projectSourceDir: string): Promise<string[]>;
|
|
4
8
|
export declare function loadHsMetaFiles(translationContext: TranslationContext): Promise<FileParseResult[]>;
|
|
9
|
+
export declare function locateHsMetaFiles(projectSourceDir: string, options?: {
|
|
10
|
+
silent: boolean;
|
|
11
|
+
}): Promise<MetaFileLocation[]>;
|
|
5
12
|
export declare function projectContainsHsMetaFiles(projectSourceDir: string): Promise<boolean>;
|
|
13
|
+
export {};
|
package/src/lib/files.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.loadHsProfileFile = loadHsProfileFile;
|
|
7
7
|
exports.getAllHsProfiles = getAllHsProfiles;
|
|
8
8
|
exports.loadHsMetaFiles = loadHsMetaFiles;
|
|
9
|
+
exports.locateHsMetaFiles = locateHsMetaFiles;
|
|
9
10
|
exports.projectContainsHsMetaFiles = projectContainsHsMetaFiles;
|
|
10
11
|
const fs_1 = __importDefault(require("fs"));
|
|
11
12
|
const path_1 = __importDefault(require("path"));
|
|
@@ -45,7 +46,7 @@ async function loadHsMetaFiles(translationContext) {
|
|
|
45
46
|
const metaFiles = await locateHsMetaFiles(translationContext.projectSourceDir);
|
|
46
47
|
return parseHsMetaFiles(metaFiles, translationContext);
|
|
47
48
|
}
|
|
48
|
-
async function locateHsMetaFiles(projectSourceDir) {
|
|
49
|
+
async function locateHsMetaFiles(projectSourceDir, options = { silent: false }) {
|
|
49
50
|
return (await (0, fs_2.walk)(projectSourceDir, ['node_modules'])).reduce((metaFiles, file) => {
|
|
50
51
|
if (!file.endsWith(constants_1.metafileExtension)) {
|
|
51
52
|
return metaFiles;
|
|
@@ -60,7 +61,9 @@ async function locateHsMetaFiles(projectSourceDir) {
|
|
|
60
61
|
metaFiles.push({ file, parentDirectory });
|
|
61
62
|
}
|
|
62
63
|
else {
|
|
63
|
-
|
|
64
|
+
if (!options.silent) {
|
|
65
|
+
logger_1.logger.warn(copy_1.logMessages.files.skippingPath(pathRelativeToProjectSrcDir));
|
|
66
|
+
}
|
|
64
67
|
}
|
|
65
68
|
return metaFiles;
|
|
66
69
|
}, []);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ComponentMetadata {
|
|
2
|
+
count: number;
|
|
3
|
+
maxCount: number;
|
|
4
|
+
hsMetaFiles: string[];
|
|
5
|
+
}
|
|
6
|
+
export interface ComponentMetadataMap {
|
|
7
|
+
[componentType: string]: ComponentMetadata;
|
|
8
|
+
}
|
|
9
|
+
export interface ProjectMetadata {
|
|
10
|
+
hsMetaFiles: string[];
|
|
11
|
+
components: ComponentMetadataMap;
|
|
12
|
+
}
|
|
13
|
+
export declare function getProjectMetadata(projectSrcDir: string): Promise<ProjectMetadata>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getProjectMetadata = getProjectMetadata;
|
|
7
|
+
const constants_1 = require("./constants");
|
|
8
|
+
const files_1 = require("./files");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
async function getProjectMetadata(projectSrcDir) {
|
|
11
|
+
const hsMetaFiles = [];
|
|
12
|
+
const components = {};
|
|
13
|
+
const metafiles = await (0, files_1.locateHsMetaFiles)(projectSrcDir, { silent: true });
|
|
14
|
+
Object.keys(constants_1.Components).forEach(componentType => {
|
|
15
|
+
const { parentComponent, singularComponent, dir } = constants_1.Components[componentType];
|
|
16
|
+
const componentPath = path_1.default.join(projectSrcDir, parentComponent ? path_1.default.join(parentComponent, dir) : dir);
|
|
17
|
+
const metaFilesByType = metafiles
|
|
18
|
+
.filter(metafile => path_1.default.parse(metafile.file).dir === componentPath)
|
|
19
|
+
.map(metaFile => metaFile.file);
|
|
20
|
+
hsMetaFiles.push(...metaFilesByType);
|
|
21
|
+
components[componentType] = {
|
|
22
|
+
hsMetaFiles: metaFilesByType,
|
|
23
|
+
count: metaFilesByType.length,
|
|
24
|
+
maxCount: singularComponent ? 1 : Infinity,
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
hsMetaFiles,
|
|
29
|
+
components,
|
|
30
|
+
};
|
|
31
|
+
}
|