@webiny/api-headless-cms-tasks 6.2.0-beta.0 → 6.3.0-beta.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.
@@ -1 +1 @@
1
- {"version":3,"names":["TaskDefinition","CmsContext","DELETE_MODEL_TASK","DeleteModelTaskDefinition","id","title","maxIterations","isPrivate","databaseLogs","description","constructor","context","run","params","DeleteModel","runner","ex","controller","response","error","createInputValidation","validator","modelId","string","lastDeletedId","optional","DeleteModelTask","createImplementation","implementation","dependencies"],"sources":["DeleteModelTask.ts"],"sourcesContent":["import type { IDeleteModelTaskInput } from \"./types.js\";\nimport type { IDeleteModelTaskOutput } from \"./types.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { CmsContext } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\nimport { DELETE_MODEL_TASK } from \"~/constants.js\";\n\ntype IRunParams = TaskDefinition.RunParams<IDeleteModelTaskInput, IDeleteModelTaskOutput>;\n\nclass DeleteModelTaskDefinition\n implements TaskDefinition.Interface<IDeleteModelTaskInput, IDeleteModelTaskOutput>\n{\n id = DELETE_MODEL_TASK;\n title = \"Delete model and all of the entries\";\n maxIterations = 50;\n isPrivate = true;\n databaseLogs = false;\n description = \"Delete a content model and all associated entries.\";\n\n constructor(private context: CmsContext.Interface) {}\n\n async run(params: IRunParams) {\n const { DeleteModel } = await import(\n /* webpackChunkName: \"createDeleteModel\" */ \"./DeleteModel.js\"\n );\n\n try {\n const runner = new DeleteModel(this.context);\n return await runner.run(params);\n } catch (ex) {\n return params.controller.response.error(ex);\n }\n }\n\n createInputValidation({ validator }: TaskDefinition.CreateInputValidationParams) {\n return {\n modelId: validator.string(),\n lastDeletedId: validator.string().optional()\n };\n }\n}\n\nexport const DeleteModelTask = TaskDefinition.createImplementation({\n implementation: DeleteModelTaskDefinition,\n dependencies: [CmsContext]\n});\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ,wDAAwD;AACvF,SAASC,UAAU,QAAQ,0DAA0D;AACrF,SAASC,iBAAiB;AAI1B,MAAMC,yBAAyB,CAE/B;EACIC,EAAE,GAAGF,iBAAiB;EACtBG,KAAK,GAAG,qCAAqC;EAC7CC,aAAa,GAAG,EAAE;EAClBC,SAAS,GAAG,IAAI;EAChBC,YAAY,GAAG,KAAK;EACpBC,WAAW,GAAG,oDAAoD;EAElEC,WAAWA,CAASC,OAA6B,EAAE;IAAA,KAA/BA,OAA6B,GAA7BA,OAA6B;EAAG;EAEpD,MAAMC,GAAGA,CAACC,MAAkB,EAAE;IAC1B,MAAM;MAAEC;IAAY,CAAC,GAAG,MAAM,MAAM,CAChC,6DACJ,CAAC;IAED,IAAI;MACA,MAAMC,MAAM,GAAG,IAAID,WAAW,CAAC,IAAI,CAACH,OAAO,CAAC;MAC5C,OAAO,MAAMI,MAAM,CAACH,GAAG,CAACC,MAAM,CAAC;IACnC,CAAC,CAAC,OAAOG,EAAE,EAAE;MACT,OAAOH,MAAM,CAACI,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACH,EAAE,CAAC;IAC/C;EACJ;EAEAI,qBAAqBA,CAAC;IAAEC;EAAsD,CAAC,EAAE;IAC7E,OAAO;MACHC,OAAO,EAAED,SAAS,CAACE,MAAM,CAAC,CAAC;MAC3BC,aAAa,EAAEH,SAAS,CAACE,MAAM,CAAC,CAAC,CAACE,QAAQ,CAAC;IAC/C,CAAC;EACL;AACJ;AAEA,OAAO,MAAMC,eAAe,GAAG1B,cAAc,CAAC2B,oBAAoB,CAAC;EAC/DC,cAAc,EAAEzB,yBAAyB;EACzC0B,YAAY,EAAE,CAAC5B,UAAU;AAC7B,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TaskDefinition","CmsContext","DELETE_MODEL_TASK","DeleteModelTaskDefinition","id","title","maxIterations","isPrivate","databaseLogs","description","constructor","context","run","params","DeleteModel","runner","ex","controller","response","error","createInputValidation","validator","modelId","string","lastDeletedId","optional","DeleteModelTask","createImplementation","implementation","dependencies"],"sources":["DeleteModelTask.ts"],"sourcesContent":["import type { IDeleteModelTaskInput } from \"./types.js\";\nimport type { IDeleteModelTaskOutput } from \"./types.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { CmsContext } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\nimport { DELETE_MODEL_TASK } from \"~/constants.js\";\n\ntype IRunParams = TaskDefinition.RunParams<IDeleteModelTaskInput, IDeleteModelTaskOutput>;\n\nclass DeleteModelTaskDefinition implements TaskDefinition.Interface<\n IDeleteModelTaskInput,\n IDeleteModelTaskOutput\n> {\n id = DELETE_MODEL_TASK;\n title = \"Delete model and all of the entries\";\n maxIterations = 50;\n isPrivate = true;\n databaseLogs = false;\n description = \"Delete a content model and all associated entries.\";\n\n constructor(private context: CmsContext.Interface) {}\n\n async run(params: IRunParams) {\n const { DeleteModel } = await import(\n /* webpackChunkName: \"createDeleteModel\" */ \"./DeleteModel.js\"\n );\n\n try {\n const runner = new DeleteModel(this.context);\n return await runner.run(params);\n } catch (ex) {\n return params.controller.response.error(ex);\n }\n }\n\n createInputValidation({ validator }: TaskDefinition.CreateInputValidationParams) {\n return {\n modelId: validator.string(),\n lastDeletedId: validator.string().optional()\n };\n }\n}\n\nexport const DeleteModelTask = TaskDefinition.createImplementation({\n implementation: DeleteModelTaskDefinition,\n dependencies: [CmsContext]\n});\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ,wDAAwD;AACvF,SAASC,UAAU,QAAQ,0DAA0D;AACrF,SAASC,iBAAiB;AAI1B,MAAMC,yBAAyB,CAG7B;EACEC,EAAE,GAAGF,iBAAiB;EACtBG,KAAK,GAAG,qCAAqC;EAC7CC,aAAa,GAAG,EAAE;EAClBC,SAAS,GAAG,IAAI;EAChBC,YAAY,GAAG,KAAK;EACpBC,WAAW,GAAG,oDAAoD;EAElEC,WAAWA,CAASC,OAA6B,EAAE;IAAA,KAA/BA,OAA6B,GAA7BA,OAA6B;EAAG;EAEpD,MAAMC,GAAGA,CAACC,MAAkB,EAAE;IAC1B,MAAM;MAAEC;IAAY,CAAC,GAAG,MAAM,MAAM,CAChC,6DACJ,CAAC;IAED,IAAI;MACA,MAAMC,MAAM,GAAG,IAAID,WAAW,CAAC,IAAI,CAACH,OAAO,CAAC;MAC5C,OAAO,MAAMI,MAAM,CAACH,GAAG,CAACC,MAAM,CAAC;IACnC,CAAC,CAAC,OAAOG,EAAE,EAAE;MACT,OAAOH,MAAM,CAACI,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACH,EAAE,CAAC;IAC/C;EACJ;EAEAI,qBAAqBA,CAAC;IAAEC;EAAsD,CAAC,EAAE;IAC7E,OAAO;MACHC,OAAO,EAAED,SAAS,CAACE,MAAM,CAAC,CAAC;MAC3BC,aAAa,EAAEH,SAAS,CAACE,MAAM,CAAC,CAAC,CAACE,QAAQ,CAAC;IAC/C,CAAC;EACL;AACJ;AAEA,OAAO,MAAMC,eAAe,GAAG1B,cAAc,CAAC2B,oBAAoB,CAAC;EAC/DC,cAAc,EAAEzB,yBAAyB;EACzC0B,YAAY,EAAE,CAAC5B,UAAU;AAC7B,CAAC,CAAC","ignoreList":[]}
@@ -1 +1,4 @@
1
- export declare const DeleteModelTaskFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const DeleteModelTaskFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -2,4 +2,7 @@ import type { HeadlessCmsFullyDeleteModel } from "../../types.js";
2
2
  export interface LegacyDeps {
3
3
  isModelBeingDeleted: HeadlessCmsFullyDeleteModel["isModelBeingDeleted"];
4
4
  }
5
- export declare const DisableModelFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<LegacyDeps>;
5
+ export declare const DisableModelFeature: {
6
+ name: string;
7
+ register(container: import("@webiny/di").Container, context: LegacyDeps): void;
8
+ };
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","BlockActionIfModelDisabled","Abstraction","BlockModelActionOnEntryBeforeCreate","BlockModelActionOnEntryRevisionBeforeCreate","BlockModelActionOnEntryBeforeUpdate","BlockModelActionOnEntryBeforeUnpublish","BlockModelActionOnEntryBeforePublish","BlockModelActionOnEntryBeforeRepublish","BlockModelActionOnEntryBeforeRestoreFromBin","BlockModelActionOnEntryBeforeMove","BlockModelActionOnModelBeforeUpdate","BlockModelActionOnModelBeforeCreateFrom","DisableModelFeature","name","register","container","params","registerInstance","isModelBeingDeleted"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { BlockActionIfModelDisabled as Abstraction } from \"./abstractions.js\";\nimport { BlockActionIfModelDisabled } from \"./BlockActionIfModelDisabled.js\";\nimport type { HeadlessCmsFullyDeleteModel } from \"~/types.js\";\nimport { BlockModelActionOnEntryBeforeCreate } from \"./handlers/BlockModelActionOnEntryBeforeCreate.js\";\nimport { BlockModelActionOnEntryRevisionBeforeCreate } from \"./handlers/BlockModelActionOnEntryRevisionBeforeCreate.js\";\nimport { BlockModelActionOnEntryBeforeUpdate } from \"./handlers/BlockModelActionOnEntryBeforeUpdate.js\";\nimport { BlockModelActionOnEntryBeforeUnpublish } from \"./handlers/BlockModelActionOnEntryBeforeUnpublish.js\";\nimport { BlockModelActionOnEntryBeforePublish } from \"./handlers/BlockModelActionOnEntryBeforePublish.js\";\nimport { BlockModelActionOnEntryBeforeRepublish } from \"./handlers/BlockModelActionOnEntryBeforeRepublish.js\";\nimport { BlockModelActionOnEntryBeforeRestoreFromBin } from \"./handlers/BlockModelActionOnEntryBeforeRestoreFromBin.js\";\nimport { BlockModelActionOnEntryBeforeMove } from \"./handlers/BlockModelActionOnEntryBeforeMove.js\";\nimport { BlockModelActionOnModelBeforeUpdate } from \"./handlers/BlockModelActionOnModelBeforeUpdate.js\";\nimport { BlockModelActionOnModelBeforeCreateFrom } from \"./handlers/BlockModelActionOnModelBeforeCreateFrom.js\";\n\nexport interface LegacyDeps {\n isModelBeingDeleted: HeadlessCmsFullyDeleteModel[\"isModelBeingDeleted\"];\n}\n\nexport const DisableModelFeature = createFeature({\n name: \"DisableModel\",\n register(container, params: LegacyDeps) {\n // Register the blocking service\n container.registerInstance(\n Abstraction,\n new BlockActionIfModelDisabled(params.isModelBeingDeleted)\n );\n\n // Register entry event handlers\n container.register(BlockModelActionOnEntryBeforeCreate);\n container.register(BlockModelActionOnEntryRevisionBeforeCreate);\n container.register(BlockModelActionOnEntryBeforeUpdate);\n container.register(BlockModelActionOnEntryBeforeUnpublish);\n container.register(BlockModelActionOnEntryBeforePublish);\n container.register(BlockModelActionOnEntryBeforeRepublish);\n container.register(BlockModelActionOnEntryBeforeRestoreFromBin);\n container.register(BlockModelActionOnEntryBeforeMove);\n\n // Register model event handlers\n container.register(BlockModelActionOnModelBeforeUpdate);\n container.register(BlockModelActionOnModelBeforeCreateFrom);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,0BAA0B,IAAIC,WAAW;AAClD,SAASD,0BAA0B;AAEnC,SAASE,mCAAmC;AAC5C,SAASC,2CAA2C;AACpD,SAASC,mCAAmC;AAC5C,SAASC,sCAAsC;AAC/C,SAASC,oCAAoC;AAC7C,SAASC,sCAAsC;AAC/C,SAASC,2CAA2C;AACpD,SAASC,iCAAiC;AAC1C,SAASC,mCAAmC;AAC5C,SAASC,uCAAuC;AAMhD,OAAO,MAAMC,mBAAmB,GAAGb,aAAa,CAAC;EAC7Cc,IAAI,EAAE,cAAc;EACpBC,QAAQA,CAACC,SAAS,EAAEC,MAAkB,EAAE;IACpC;IACAD,SAAS,CAACE,gBAAgB,CACtBhB,WAAW,EACX,IAAID,0BAA0B,CAACgB,MAAM,CAACE,mBAAmB,CAC7D,CAAC;;IAED;IACAH,SAAS,CAACD,QAAQ,CAACZ,mCAAmC,CAAC;IACvDa,SAAS,CAACD,QAAQ,CAACX,2CAA2C,CAAC;IAC/DY,SAAS,CAACD,QAAQ,CAACV,mCAAmC,CAAC;IACvDW,SAAS,CAACD,QAAQ,CAACT,sCAAsC,CAAC;IAC1DU,SAAS,CAACD,QAAQ,CAACR,oCAAoC,CAAC;IACxDS,SAAS,CAACD,QAAQ,CAACP,sCAAsC,CAAC;IAC1DQ,SAAS,CAACD,QAAQ,CAACN,2CAA2C,CAAC;IAC/DO,SAAS,CAACD,QAAQ,CAACL,iCAAiC,CAAC;;IAErD;IACAM,SAAS,CAACD,QAAQ,CAACJ,mCAAmC,CAAC;IACvDK,SAAS,CAACD,QAAQ,CAACH,uCAAuC,CAAC;EAC/D;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createFeature","BlockActionIfModelDisabled","Abstraction","BlockModelActionOnEntryBeforeCreate","BlockModelActionOnEntryRevisionBeforeCreate","BlockModelActionOnEntryBeforeUpdate","BlockModelActionOnEntryBeforeUnpublish","BlockModelActionOnEntryBeforePublish","BlockModelActionOnEntryBeforeRepublish","BlockModelActionOnEntryBeforeRestoreFromBin","BlockModelActionOnEntryBeforeMove","BlockModelActionOnModelBeforeUpdate","BlockModelActionOnModelBeforeCreateFrom","DisableModelFeature","name","register","container","params","registerInstance","isModelBeingDeleted"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { BlockActionIfModelDisabled as Abstraction } from \"./abstractions.js\";\nimport { BlockActionIfModelDisabled } from \"./BlockActionIfModelDisabled.js\";\nimport type { HeadlessCmsFullyDeleteModel } from \"~/types.js\";\nimport { BlockModelActionOnEntryBeforeCreate } from \"./handlers/BlockModelActionOnEntryBeforeCreate.js\";\nimport { BlockModelActionOnEntryRevisionBeforeCreate } from \"./handlers/BlockModelActionOnEntryRevisionBeforeCreate.js\";\nimport { BlockModelActionOnEntryBeforeUpdate } from \"./handlers/BlockModelActionOnEntryBeforeUpdate.js\";\nimport { BlockModelActionOnEntryBeforeUnpublish } from \"./handlers/BlockModelActionOnEntryBeforeUnpublish.js\";\nimport { BlockModelActionOnEntryBeforePublish } from \"./handlers/BlockModelActionOnEntryBeforePublish.js\";\nimport { BlockModelActionOnEntryBeforeRepublish } from \"./handlers/BlockModelActionOnEntryBeforeRepublish.js\";\nimport { BlockModelActionOnEntryBeforeRestoreFromBin } from \"./handlers/BlockModelActionOnEntryBeforeRestoreFromBin.js\";\nimport { BlockModelActionOnEntryBeforeMove } from \"./handlers/BlockModelActionOnEntryBeforeMove.js\";\nimport { BlockModelActionOnModelBeforeUpdate } from \"./handlers/BlockModelActionOnModelBeforeUpdate.js\";\nimport { BlockModelActionOnModelBeforeCreateFrom } from \"./handlers/BlockModelActionOnModelBeforeCreateFrom.js\";\n\nexport interface LegacyDeps {\n isModelBeingDeleted: HeadlessCmsFullyDeleteModel[\"isModelBeingDeleted\"];\n}\n\nexport const DisableModelFeature = createFeature<LegacyDeps>({\n name: \"DisableModel\",\n register(container, params) {\n // Register the blocking service\n container.registerInstance(\n Abstraction,\n new BlockActionIfModelDisabled(params.isModelBeingDeleted)\n );\n\n // Register entry event handlers\n container.register(BlockModelActionOnEntryBeforeCreate);\n container.register(BlockModelActionOnEntryRevisionBeforeCreate);\n container.register(BlockModelActionOnEntryBeforeUpdate);\n container.register(BlockModelActionOnEntryBeforeUnpublish);\n container.register(BlockModelActionOnEntryBeforePublish);\n container.register(BlockModelActionOnEntryBeforeRepublish);\n container.register(BlockModelActionOnEntryBeforeRestoreFromBin);\n container.register(BlockModelActionOnEntryBeforeMove);\n\n // Register model event handlers\n container.register(BlockModelActionOnModelBeforeUpdate);\n container.register(BlockModelActionOnModelBeforeCreateFrom);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,0BAA0B,IAAIC,WAAW;AAClD,SAASD,0BAA0B;AAEnC,SAASE,mCAAmC;AAC5C,SAASC,2CAA2C;AACpD,SAASC,mCAAmC;AAC5C,SAASC,sCAAsC;AAC/C,SAASC,oCAAoC;AAC7C,SAASC,sCAAsC;AAC/C,SAASC,2CAA2C;AACpD,SAASC,iCAAiC;AAC1C,SAASC,mCAAmC;AAC5C,SAASC,uCAAuC;AAMhD,OAAO,MAAMC,mBAAmB,GAAGb,aAAa,CAAa;EACzDc,IAAI,EAAE,cAAc;EACpBC,QAAQA,CAACC,SAAS,EAAEC,MAAM,EAAE;IACxB;IACAD,SAAS,CAACE,gBAAgB,CACtBhB,WAAW,EACX,IAAID,0BAA0B,CAACgB,MAAM,CAACE,mBAAmB,CAC7D,CAAC;;IAED;IACAH,SAAS,CAACD,QAAQ,CAACZ,mCAAmC,CAAC;IACvDa,SAAS,CAACD,QAAQ,CAACX,2CAA2C,CAAC;IAC/DY,SAAS,CAACD,QAAQ,CAACV,mCAAmC,CAAC;IACvDW,SAAS,CAACD,QAAQ,CAACT,sCAAsC,CAAC;IAC1DU,SAAS,CAACD,QAAQ,CAACR,oCAAoC,CAAC;IACxDS,SAAS,CAACD,QAAQ,CAACP,sCAAsC,CAAC;IAC1DQ,SAAS,CAACD,QAAQ,CAACN,2CAA2C,CAAC;IAC/DO,SAAS,CAACD,QAAQ,CAACL,iCAAiC,CAAC;;IAErD;IACAM,SAAS,CAACD,QAAQ,CAACJ,mCAAmC,CAAC;IACvDK,SAAS,CAACD,QAAQ,CAACH,uCAAuC,CAAC;EAC/D;AACJ,CAAC,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-headless-cms-tasks",
3
- "version": "6.2.0-beta.0",
3
+ "version": "6.3.0-beta.0",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "description": "Background tasks for Webiny Headless CMS",
@@ -14,33 +14,33 @@
14
14
  },
15
15
  "license": "MIT",
16
16
  "dependencies": {
17
- "@webiny/api": "6.2.0-beta.0",
18
- "@webiny/api-aco": "6.2.0-beta.0",
19
- "@webiny/api-headless-cms": "6.2.0-beta.0",
20
- "@webiny/api-headless-cms-bulk-actions": "6.2.0-beta.0",
21
- "@webiny/api-headless-cms-import-export": "6.2.0-beta.0",
22
- "@webiny/db": "6.2.0-beta.0",
23
- "@webiny/error": "6.2.0-beta.0",
24
- "@webiny/feature": "6.2.0-beta.0",
25
- "@webiny/handler-graphql": "6.2.0-beta.0",
26
- "@webiny/tasks": "6.2.0-beta.0",
27
- "@webiny/utils": "6.2.0-beta.0",
17
+ "@webiny/api": "6.3.0-beta.0",
18
+ "@webiny/api-aco": "6.3.0-beta.0",
19
+ "@webiny/api-headless-cms": "6.3.0-beta.0",
20
+ "@webiny/api-headless-cms-bulk-actions": "6.3.0-beta.0",
21
+ "@webiny/api-headless-cms-import-export": "6.3.0-beta.0",
22
+ "@webiny/db": "6.3.0-beta.0",
23
+ "@webiny/error": "6.3.0-beta.0",
24
+ "@webiny/feature": "6.3.0-beta.0",
25
+ "@webiny/handler-graphql": "6.3.0-beta.0",
26
+ "@webiny/tasks": "6.3.0-beta.0",
27
+ "@webiny/utils": "6.3.0-beta.0",
28
28
  "zod": "4.3.6"
29
29
  },
30
30
  "devDependencies": {
31
- "@webiny/api-core": "6.2.0-beta.0",
32
- "@webiny/build-tools": "6.2.0-beta.0",
33
- "@webiny/handler": "6.2.0-beta.0",
34
- "@webiny/handler-aws": "6.2.0-beta.0",
35
- "@webiny/plugins": "6.2.0-beta.0",
36
- "@webiny/project-utils": "6.2.0-beta.0",
37
- "@webiny/wcp": "6.2.0-beta.0",
38
- "typescript": "5.9.3",
31
+ "@webiny/api-core": "6.3.0-beta.0",
32
+ "@webiny/build-tools": "6.3.0-beta.0",
33
+ "@webiny/handler": "6.3.0-beta.0",
34
+ "@webiny/handler-aws": "6.3.0-beta.0",
35
+ "@webiny/plugins": "6.3.0-beta.0",
36
+ "@webiny/project-utils": "6.3.0-beta.0",
37
+ "@webiny/wcp": "6.3.0-beta.0",
38
+ "typescript": "6.0.3",
39
39
  "vitest": "4.1.4"
40
40
  },
41
41
  "publishConfig": {
42
42
  "access": "public",
43
43
  "directory": "dist"
44
44
  },
45
- "gitHead": "3d3148358b6febbc857371930871743bec3b3939"
45
+ "gitHead": "94c21e58aebc9855bf1ae972423281faa0f5c135"
46
46
  }