npm package diff

Package: @forge/manifest

Versions: 8.0.0-next.6 - 8.0.0-next.7

Modified:package/out/types/module-types.js

Index: package/out/types/module-types.js
===================================================================
--- package/out/types/module-types.js
+++ package/out/types/module-types.js
@@ -10,8 +10,9 @@
     AllModuleTypes["CoreScheduledTrigger"] = "core:scheduledTrigger";
     AllModuleTypes["CoreEndpoint"] = "core:endpoint";
     AllModuleTypes["CoreMigration"] = "core:migration";
     AllModuleTypes["CoreRemote"] = "core:remote";
+    AllModuleTypes["CoreSql"] = "core:sql";
     AllModuleTypes["XenMacro"] = "xen:macro";
     AllModuleTypes["ConfluenceContentAction"] = "confluence:contentAction";
     AllModuleTypes["ConfluenceContentBylineItem"] = "confluence:contentBylineItem";
     AllModuleTypes["ConfluenceContextMenu"] = "confluence:contextMenu";

Modified:package/out/validators/storage-validator.js

Index: package/out/validators/storage-validator.js
===================================================================
--- package/out/validators/storage-validator.js
+++ package/out/validators/storage-validator.js
@@ -8,101 +8,112 @@
     entityAttributesMaxCount = 50;
     entityIndexesMaxCount = 7;
     reservedIndexName = 'by-key';
     async validate(manifest) {
-        if (!manifest?.typedContent?.app?.storage) {
-            return {
-                success: true,
-                manifestObject: manifest
-            };
-        }
         const validationErrors = [];
-        if (!manifest.typedContent.app.storage.entities) {
-            return {
-                success: true,
-                manifestObject: manifest
-            };
-        }
-        const entities = manifest.typedContent.app.storage.entities;
-        entities.forEach((entity) => {
-            const { name, attributes } = entity;
-            if (Object.keys(attributes).length > this.entityAttributesMaxCount) {
+        validationErrors.push(...this.validateSqlModules(manifest));
+        validationErrors.push(...this.validateCustomEntities(manifest));
+        return {
+            success: validationErrors.length === 0,
+            manifestObject: manifest,
+            ...(validationErrors.length ? { errors: validationErrors } : {})
+        };
+    }
+    validateSqlModules(manifest) {
+        const validationErrors = [];
+        const sqlModules = manifest?.typedContent?.modules?.sql;
+        if (sqlModules && sqlModules.length) {
+            if (sqlModules.length > 1) {
                 validationErrors.push({
-                    message: text_1.errors.app.storage.entities.tooManyAttributes(name, this.entityAttributesMaxCount),
-                    reference: text_1.References.App,
+                    message: `Found ${sqlModules.length} SQL modules; only one is allowed.`,
+                    reference: text_1.References.Modules,
                     level: 'error',
-                    ...(0, utils_1.findPosition)('entities', manifest.yamlContentByLine)
+                    ...(0, utils_1.findPosition)('sql', manifest.yamlContentByLine)
                 });
             }
-            Object.keys(attributes).forEach((attributeKey) => {
-                if (attributeKey.length > this.entityAttributeMaxLength) {
+        }
+        return validationErrors;
+    }
+    validateCustomEntities(manifest) {
+        const validationErrors = [];
+        const entities = manifest?.typedContent?.app?.storage?.entities;
+        if (entities) {
+            entities.forEach((entity) => {
+                const { name, attributes } = entity;
+                if (Object.keys(attributes).length > this.entityAttributesMaxCount) {
                     validationErrors.push({
-                        message: text_1.errors.app.storage.entities.attributeNameTooLong(name, attributeKey, this.entityAttributeMaxLength),
+                        message: text_1.errors.app.storage.entities.tooManyAttributes(name, this.entityAttributesMaxCount),
                         reference: text_1.References.App,
                         level: 'error',
                         ...(0, utils_1.findPosition)('entities', manifest.yamlContentByLine)
                     });
                 }
-            });
-            if (entity.indexes) {
-                const { indexes } = entity;
-                if (indexes.length > this.entityIndexesMaxCount) {
-                    validationErrors.push({
-                        message: text_1.errors.app.storage.entities.tooManyIndexes(name, this.entityIndexesMaxCount),
-                        reference: text_1.References.App,
-                        level: 'error',
-                        ...(0, utils_1.findPosition)('entities', manifest.yamlContentByLine)
-                    });
-                }
-                const indexName = [];
-                const indexRange = [];
-                const indexPartition = [];
-                indexes.forEach((index) => {
-                    if (typeof index === 'string') {
-                        indexRange.push(index);
+                Object.keys(attributes).forEach((attributeKey) => {
+                    if (attributeKey.length > this.entityAttributeMaxLength) {
+                        validationErrors.push({
+                            message: text_1.errors.app.storage.entities.attributeNameTooLong(name, attributeKey, this.entityAttributeMaxLength),
+                            reference: text_1.References.App,
+                            level: 'error',
+                            ...(0, utils_1.findPosition)('entities', manifest.yamlContentByLine)
+                        });
                     }
-                    else if (typeof index === 'object') {
-                        indexName.push(index.name);
-                        indexRange.push(...index.range);
-                        if (index.partition) {
-                            indexPartition.push(...index.partition);
-                        }
-                    }
                 });
-                if (indexName.find((name) => name === this.reservedIndexName)) {
-                    validationErrors.push({
-                        message: text_1.errors.app.storage.entities.reservedIndexName(name, this.reservedIndexName),
-                        reference: text_1.References.App,
-                        level: 'error',
-                        ...(0, utils_1.findPosition)('entities', manifest.yamlContentByLine)
-                    });
-                }
-                indexRange.forEach((range) => {
-                    if (!Object.keys(attributes).length || !attributes[range]) {
+                if (entity.indexes) {
+                    const { indexes } = entity;
+                    if (indexes.length > this.entityIndexesMaxCount) {
                         validationErrors.push({
-                            message: text_1.errors.app.storage.entities.invalidIndexRange(name, range),
+                            message: text_1.errors.app.storage.entities.tooManyIndexes(name, this.entityIndexesMaxCount),
                             reference: text_1.References.App,
                             level: 'error',
                             ...(0, utils_1.findPosition)('entities', manifest.yamlContentByLine)
                         });
                     }
-                });
-                indexPartition.forEach((partition) => {
-                    if (!Object.keys(attributes).length || !attributes[partition]) {
+                    const indexName = [];
+                    const indexRange = [];
+                    const indexPartition = [];
+                    indexes.forEach((index) => {
+                        if (typeof index === 'string') {
+                            indexRange.push(index);
+                        }
+                        else if (typeof index === 'object') {
+                            indexName.push(index.name);
+                            indexRange.push(...index.range);
+                            if (index.partition) {
+                                indexPartition.push(...index.partition);
+                            }
+                        }
+                    });
+                    if (indexName.find((name) => name === this.reservedIndexName)) {
                         validationErrors.push({
-                            message: text_1.errors.app.storage.entities.invalidIndexPartition(name, partition),
+                            message: text_1.errors.app.storage.entities.reservedIndexName(name, this.reservedIndexName),
                             reference: text_1.References.App,
                             level: 'error',
                             ...(0, utils_1.findPosition)('entities', manifest.yamlContentByLine)
                         });
                     }
-                });
-            }
-        });
-        return {
-            success: validationErrors.length === 0,
-            manifestObject: manifest,
-            errors: validationErrors
-        };
+                    indexRange.forEach((range) => {
+                        if (!Object.keys(attributes).length || !attributes[range]) {
+                            validationErrors.push({
+                                message: text_1.errors.app.storage.entities.invalidIndexRange(name, range),
+                                reference: text_1.References.App,
+                                level: 'error',
+                                ...(0, utils_1.findPosition)('entities', manifest.yamlContentByLine)
+                            });
+                        }
+                    });
+                    indexPartition.forEach((partition) => {
+                        if (!Object.keys(attributes).length || !attributes[partition]) {
+                            validationErrors.push({
+                                message: text_1.errors.app.storage.entities.invalidIndexPartition(name, partition),
+                                reference: text_1.References.App,
+                                level: 'error',
+                                ...(0, utils_1.findPosition)('entities', manifest.yamlContentByLine)
+                            });
+                        }
+                    });
+                }
+            });
+        }
+        return validationErrors;
     }
 }
 exports.StorageValidator = StorageValidator;

Modified:package/out/schema/manifest-schema.json

too-big

Modified:package/package.json

Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/manifest",
-  "version": "8.0.0-next.6",
+  "version": "8.0.0-next.7",
   "description": "Definitions and validations of the Forge manifest",
   "main": "out/index.js",
   "scripts": {
     "build": "yarn run compile",

Modified:package/out/types/module-types.d.ts.map

Index: package/out/types/module-types.d.ts.map
===================================================================
--- package/out/types/module-types.d.ts.map
+++ package/out/types/module-types.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"module-types.d.ts","sourceRoot":"","sources":["../../src/types/module-types.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"module-types.d.ts","sourceRoot":"","sources":["../../src/types/module-types.ts"],"names":[],"mappings":"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"}
\ No newline at end of file

Modified:package/out/validators/storage-validator.d.ts.map

Index: package/out/validators/storage-validator.d.ts.map
===================================================================
--- package/out/validators/storage-validator.d.ts.map
+++ package/out/validators/storage-validator.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"storage-validator.d.ts","sourceRoot":"","sources":["../../src/validators/storage-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,qBAAa,gBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAEzF,OAAO,CAAC,wBAAwB,CAAM;IACtC,OAAO,CAAC,wBAAwB,CAAM;IACtC,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,iBAAiB,CAAY;IAE/B,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;CAyHrD"}
\ No newline at end of file
+{"version":3,"file":"storage-validator.d.ts","sourceRoot":"","sources":["../../src/validators/storage-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,qBAAa,gBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAEzF,OAAO,CAAC,wBAAwB,CAAM;IACtC,OAAO,CAAC,wBAAwB,CAAM;IACtC,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,iBAAiB,CAAY;IAE/B,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAYpD,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,sBAAsB;CAwG/B"}
\ No newline at end of file

Modified:package/CHANGELOG.md

Index: package/CHANGELOG.md
===================================================================
--- package/CHANGELOG.md
+++ package/CHANGELOG.md
@@ -1,6 +1,12 @@
 # @forge/manifest
 
+## 8.0.0-next.7
+
+### Minor Changes
+
+- 5d4af6e: Added storage modules
+
 ## 8.0.0-next.6
 
 ### Patch Changes

Modified:package/out/schema/manifest.d.ts

too-big

Modified:package/out/types/module-types.d.ts

Index: package/out/types/module-types.d.ts
===================================================================
--- package/out/types/module-types.d.ts
+++ package/out/types/module-types.d.ts
@@ -6,8 +6,9 @@
     CoreScheduledTrigger = "core:scheduledTrigger",
     CoreEndpoint = "core:endpoint",
     CoreMigration = "core:migration",
     CoreRemote = "core:remote",
+    CoreSql = "core:sql",
     XenMacro = "xen:macro",
     ConfluenceContentAction = "confluence:contentAction",
     ConfluenceContentBylineItem = "confluence:contentBylineItem",
     ConfluenceContextMenu = "confluence:contextMenu",

Modified:package/out/validators/storage-validator.d.ts

Index: package/out/validators/storage-validator.d.ts
===================================================================
--- package/out/validators/storage-validator.d.ts
+++ package/out/validators/storage-validator.d.ts
@@ -6,6 +6,8 @@
     private entityAttributesMaxCount;
     private entityIndexesMaxCount;
     private reservedIndexName;
     validate(manifest: ManifestObject<ManifestSchema> | undefined): Promise<ManifestValidationResult<ManifestSchema>>;
+    private validateSqlModules;
+    private validateCustomEntities;
 }
 //# sourceMappingURL=storage-validator.d.ts.map
\ No newline at end of file