@strapi/core 0.0.0-experimental.3f7b2587c5e3d548262671895cf11d8bf8c → 0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7
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.
Potentially problematic release.
This version of @strapi/core might be problematic. Click here for more details.
- package/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +7 -3
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +6 -2
- package/dist/Strapi.mjs.map +1 -1
- package/dist/core-api/controller/collection-type.d.ts +1 -1
- package/dist/core-api/controller/collection-type.d.ts.map +1 -1
- package/dist/core-api/controller/collection-type.js +9 -20
- package/dist/core-api/controller/collection-type.js.map +1 -1
- package/dist/core-api/controller/collection-type.mjs +8 -20
- package/dist/core-api/controller/collection-type.mjs.map +1 -1
- package/dist/core-api/controller/index.d.ts.map +1 -1
- package/dist/core-api/controller/index.js +2 -2
- package/dist/core-api/controller/index.js.map +1 -1
- package/dist/core-api/controller/index.mjs +2 -2
- package/dist/core-api/controller/index.mjs.map +1 -1
- package/dist/core-api/controller/single-type.d.ts +1 -1
- package/dist/core-api/controller/single-type.d.ts.map +1 -1
- package/dist/core-api/controller/single-type.js +6 -11
- package/dist/core-api/controller/single-type.js.map +1 -1
- package/dist/core-api/controller/single-type.mjs +5 -11
- package/dist/core-api/controller/single-type.mjs.map +1 -1
- package/dist/core-api/controller/transform.d.ts +2 -11
- package/dist/core-api/controller/transform.d.ts.map +1 -1
- package/dist/core-api/controller/transform.js +4 -18
- package/dist/core-api/controller/transform.js.map +1 -1
- package/dist/core-api/controller/transform.mjs +4 -18
- package/dist/core-api/controller/transform.mjs.map +1 -1
- package/dist/core-api/service/collection-type.d.ts +28 -5
- package/dist/core-api/service/collection-type.d.ts.map +1 -1
- package/dist/core-api/service/collection-type.js +47 -49
- package/dist/core-api/service/collection-type.js.map +1 -1
- package/dist/core-api/service/collection-type.mjs +47 -50
- package/dist/core-api/service/collection-type.mjs.map +1 -1
- package/dist/core-api/service/core-service.d.ts +4 -0
- package/dist/core-api/service/core-service.d.ts.map +1 -0
- package/dist/core-api/service/core-service.js +12 -0
- package/dist/core-api/service/core-service.js.map +1 -0
- package/dist/core-api/service/core-service.mjs +12 -0
- package/dist/core-api/service/core-service.mjs.map +1 -0
- package/dist/core-api/service/index.js +2 -2
- package/dist/core-api/service/index.js.map +1 -1
- package/dist/core-api/service/index.mjs +4 -4
- package/dist/core-api/service/index.mjs.map +1 -1
- package/dist/core-api/service/pagination.d.ts +1 -5
- package/dist/core-api/service/pagination.d.ts.map +1 -1
- package/dist/core-api/service/pagination.js +0 -11
- package/dist/core-api/service/pagination.js.map +1 -1
- package/dist/core-api/service/pagination.mjs +0 -11
- package/dist/core-api/service/pagination.mjs.map +1 -1
- package/dist/core-api/service/single-type.d.ts +14 -8
- package/dist/core-api/service/single-type.d.ts.map +1 -1
- package/dist/core-api/service/single-type.js +36 -50
- package/dist/core-api/service/single-type.js.map +1 -1
- package/dist/core-api/service/single-type.mjs +35 -50
- package/dist/core-api/service/single-type.mjs.map +1 -1
- package/dist/factories.d.ts.map +1 -1
- package/dist/factories.js +2 -12
- package/dist/factories.js.map +1 -1
- package/dist/factories.mjs +2 -12
- package/dist/factories.mjs.map +1 -1
- package/dist/registries/content-types.d.ts.map +1 -1
- package/dist/registries/content-types.js +1 -2
- package/dist/registries/content-types.js.map +1 -1
- package/dist/registries/content-types.mjs +1 -2
- package/dist/registries/content-types.mjs.map +1 -1
- package/dist/services/document-service/common.d.ts +4 -0
- package/dist/services/document-service/common.d.ts.map +1 -0
- package/dist/services/document-service/common.js +7 -0
- package/dist/services/document-service/common.js.map +1 -0
- package/dist/services/document-service/common.mjs +7 -0
- package/dist/services/document-service/common.mjs.map +1 -0
- package/dist/services/document-service/document-engine.d.ts.map +1 -1
- package/dist/services/document-service/document-engine.js +117 -76
- package/dist/services/document-service/document-engine.js.map +1 -1
- package/dist/services/document-service/document-engine.mjs +112 -71
- package/dist/services/document-service/document-engine.mjs.map +1 -1
- package/dist/services/document-service/draft-and-publish.d.ts +24 -0
- package/dist/services/document-service/draft-and-publish.d.ts.map +1 -0
- package/dist/services/document-service/draft-and-publish.js +41 -0
- package/dist/services/document-service/draft-and-publish.js.map +1 -0
- package/dist/services/document-service/draft-and-publish.mjs +41 -0
- package/dist/services/document-service/draft-and-publish.mjs.map +1 -0
- package/dist/services/document-service/{document-service.d.ts → index.d.ts} +2 -4
- package/dist/services/document-service/index.d.ts.map +1 -0
- package/dist/services/document-service/index.js +22 -0
- package/dist/services/document-service/index.js.map +1 -0
- package/dist/services/document-service/index.mjs +22 -0
- package/dist/services/document-service/index.mjs.map +1 -0
- package/dist/services/document-service/internationalization.d.ts +8 -0
- package/dist/services/document-service/internationalization.d.ts.map +1 -0
- package/dist/services/document-service/internationalization.js +54 -0
- package/dist/services/document-service/internationalization.js.map +1 -0
- package/dist/services/document-service/internationalization.mjs +54 -0
- package/dist/services/document-service/internationalization.mjs.map +1 -0
- package/dist/services/document-service/middlewares.d.ts +8 -0
- package/dist/services/document-service/middlewares.d.ts.map +1 -0
- package/dist/services/document-service/middlewares.js +46 -0
- package/dist/services/document-service/middlewares.js.map +1 -0
- package/dist/services/document-service/middlewares.mjs +46 -0
- package/dist/services/document-service/middlewares.mjs.map +1 -0
- package/dist/services/document-service/repositories/content-type.d.ts +3 -0
- package/dist/services/document-service/repositories/content-type.d.ts.map +1 -0
- package/dist/services/document-service/repositories/content-type.js +139 -0
- package/dist/services/document-service/repositories/content-type.js.map +1 -0
- package/dist/services/document-service/repositories/content-type.mjs +139 -0
- package/dist/services/document-service/repositories/content-type.mjs.map +1 -0
- package/dist/services/document-service/transform/data.d.ts +5 -0
- package/dist/services/document-service/transform/data.d.ts.map +1 -0
- package/dist/services/document-service/transform/data.js +13 -0
- package/dist/services/document-service/transform/data.js.map +1 -0
- package/dist/services/document-service/transform/data.mjs +13 -0
- package/dist/services/document-service/transform/data.mjs.map +1 -0
- package/dist/services/document-service/transform/fields.d.ts +5 -0
- package/dist/services/document-service/transform/fields.d.ts.map +1 -0
- package/dist/services/document-service/transform/fields.js +24 -0
- package/dist/services/document-service/transform/fields.js.map +1 -0
- package/dist/services/document-service/transform/fields.mjs +24 -0
- package/dist/services/document-service/transform/fields.mjs.map +1 -0
- package/dist/services/document-service/transform/id-map.d.ts +23 -0
- package/dist/services/document-service/transform/id-map.d.ts.map +1 -0
- package/dist/services/document-service/transform/id-map.js +72 -0
- package/dist/services/document-service/transform/id-map.js.map +1 -0
- package/dist/services/document-service/transform/id-map.mjs +72 -0
- package/dist/services/document-service/transform/id-map.mjs.map +1 -0
- package/dist/services/document-service/transform/id-transform.d.ts +19 -0
- package/dist/services/document-service/transform/id-transform.d.ts.map +1 -0
- package/dist/services/document-service/transform/id-transform.js +27 -0
- package/dist/services/document-service/transform/id-transform.js.map +1 -0
- package/dist/services/document-service/transform/id-transform.mjs +27 -0
- package/dist/services/document-service/transform/id-transform.mjs.map +1 -0
- package/dist/services/document-service/transform/populate.d.ts +3 -0
- package/dist/services/document-service/transform/populate.d.ts.map +1 -0
- package/dist/services/document-service/transform/populate.js +21 -0
- package/dist/services/document-service/transform/populate.js.map +1 -0
- package/dist/services/document-service/transform/populate.mjs +21 -0
- package/dist/services/document-service/transform/populate.mjs.map +1 -0
- package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +13 -0
- package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -0
- package/dist/services/document-service/transform/relations/extract/data-ids.js +79 -0
- package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -0
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs +79 -0
- package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -0
- package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +10 -0
- package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -0
- package/dist/services/document-service/transform/relations/transform/data-ids.js +117 -0
- package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -0
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs +117 -0
- package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -0
- package/dist/services/document-service/transform/relations/utils/data.d.ts +4 -0
- package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -0
- package/dist/services/document-service/transform/relations/utils/data.js +12 -0
- package/dist/services/document-service/transform/relations/utils/data.js.map +1 -0
- package/dist/services/document-service/transform/relations/utils/data.mjs +12 -0
- package/dist/services/document-service/transform/relations/utils/data.mjs.map +1 -0
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts +10 -0
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -0
- package/dist/services/document-service/transform/relations/utils/i18n.js +31 -0
- package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -0
- package/dist/services/document-service/transform/relations/utils/i18n.mjs +31 -0
- package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -0
- package/dist/services/document-service/transform/relations/utils/types.d.ts +12 -0
- package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -0
- package/dist/services/document-service/transform/types.d.ts +13 -0
- package/dist/services/document-service/transform/types.d.ts.map +1 -0
- package/dist/services/document-service/utils/populate.d.ts +3 -0
- package/dist/services/document-service/utils/populate.d.ts.map +1 -0
- package/dist/services/document-service/utils/populate.js +41 -0
- package/dist/services/document-service/utils/populate.js.map +1 -0
- package/dist/services/document-service/utils/populate.mjs +41 -0
- package/dist/services/document-service/utils/populate.mjs.map +1 -0
- package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
- package/dist/services/entity-validator/blocks-validator.js +22 -2
- package/dist/services/entity-validator/blocks-validator.js.map +1 -1
- package/dist/services/entity-validator/blocks-validator.mjs +22 -2
- package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
- package/dist/services/entity-validator/validators.d.ts.map +1 -1
- package/dist/services/entity-validator/validators.js +7 -8
- package/dist/services/entity-validator/validators.js.map +1 -1
- package/dist/services/entity-validator/validators.mjs +7 -8
- package/dist/services/entity-validator/validators.mjs.map +1 -1
- package/dist/services/server/compose-endpoint.d.ts.map +1 -1
- package/dist/services/server/compose-endpoint.js +3 -0
- package/dist/services/server/compose-endpoint.js.map +1 -1
- package/dist/services/server/compose-endpoint.mjs +3 -0
- package/dist/services/server/compose-endpoint.mjs.map +1 -1
- package/dist/services/webhook-store.js +2 -2
- package/dist/services/webhook-store.js.map +1 -1
- package/dist/services/webhook-store.mjs +2 -2
- package/dist/services/webhook-store.mjs.map +1 -1
- package/dist/utils/transform-content-types-to-models.d.ts +174 -3
- package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
- package/dist/utils/transform-content-types-to-models.js +80 -41
- package/dist/utils/transform-content-types-to-models.js.map +1 -1
- package/dist/utils/transform-content-types-to-models.mjs +79 -41
- package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
- package/package.json +14 -14
- package/dist/core-api/service/get-fetch-params.d.ts +0 -7
- package/dist/core-api/service/get-fetch-params.d.ts.map +0 -1
- package/dist/core-api/service/get-fetch-params.js +0 -14
- package/dist/core-api/service/get-fetch-params.js.map +0 -1
- package/dist/core-api/service/get-fetch-params.mjs +0 -14
- package/dist/core-api/service/get-fetch-params.mjs.map +0 -1
- package/dist/services/document-service/document-service.d.ts.map +0 -1
- package/dist/services/document-service/document-service.js +0 -132
- package/dist/services/document-service/document-service.js.map +0 -1
- package/dist/services/document-service/document-service.mjs +0 -132
- package/dist/services/document-service/document-service.mjs.map +0 -1
- package/dist/services/document-service/middlewares/defaults/draft-and-publish.d.ts +0 -26
- package/dist/services/document-service/middlewares/defaults/draft-and-publish.d.ts.map +0 -1
- package/dist/services/document-service/middlewares/defaults/draft-and-publish.js +0 -58
- package/dist/services/document-service/middlewares/defaults/draft-and-publish.js.map +0 -1
- package/dist/services/document-service/middlewares/defaults/draft-and-publish.mjs +0 -58
- package/dist/services/document-service/middlewares/defaults/draft-and-publish.mjs.map +0 -1
- package/dist/services/document-service/middlewares/defaults/index.d.ts +0 -3
- package/dist/services/document-service/middlewares/defaults/index.d.ts.map +0 -1
- package/dist/services/document-service/middlewares/defaults/index.js +0 -82
- package/dist/services/document-service/middlewares/defaults/index.js.map +0 -1
- package/dist/services/document-service/middlewares/defaults/index.mjs +0 -82
- package/dist/services/document-service/middlewares/defaults/index.mjs.map +0 -1
- package/dist/services/document-service/middlewares/defaults/locales.d.ts +0 -18
- package/dist/services/document-service/middlewares/defaults/locales.d.ts.map +0 -1
- package/dist/services/document-service/middlewares/defaults/locales.js +0 -50
- package/dist/services/document-service/middlewares/defaults/locales.js.map +0 -1
- package/dist/services/document-service/middlewares/defaults/locales.mjs +0 -50
- package/dist/services/document-service/middlewares/defaults/locales.mjs.map +0 -1
- package/dist/services/document-service/middlewares/index.d.ts +0 -11
- package/dist/services/document-service/middlewares/index.d.ts.map +0 -1
- package/dist/services/document-service/middlewares/index.js +0 -59
- package/dist/services/document-service/middlewares/index.js.map +0 -1
- package/dist/services/document-service/middlewares/index.mjs +0 -59
- package/dist/services/document-service/middlewares/index.mjs.map +0 -1
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
import { utils } from "@strapi/database";
|
|
1
2
|
import { createId } from "@paralleldrive/cuid2";
|
|
2
3
|
import assert from "node:assert";
|
|
4
|
+
import _ from "lodash/fp";
|
|
5
|
+
const { identifiers } = utils;
|
|
6
|
+
const COMPONENT_JOIN_TABLE_SUFFIX = "components";
|
|
7
|
+
const DZ_JOIN_TABLE_SUFFIX = "components";
|
|
8
|
+
const COMPONENT_INVERSE_COLUMN_NAME = "component";
|
|
9
|
+
const COMPONENT_TYPE_COLUMN = "component_type";
|
|
10
|
+
const ENTITY = "entity";
|
|
11
|
+
const getComponentJoinTableName = (collectionName) => identifiers.getTableName(collectionName, { suffix: COMPONENT_JOIN_TABLE_SUFFIX });
|
|
12
|
+
const getDzJoinTableName = (collectionName) => identifiers.getTableName(collectionName, { suffix: DZ_JOIN_TABLE_SUFFIX });
|
|
13
|
+
const { ID_COLUMN: id, FIELD_COLUMN: field, ORDER_COLUMN: order } = identifiers;
|
|
3
14
|
const transformAttribute = (name, attribute, contentType) => {
|
|
4
15
|
switch (attribute.type) {
|
|
5
16
|
case "media": {
|
|
@@ -11,6 +22,11 @@ const transformAttribute = (name, attribute, contentType) => {
|
|
|
11
22
|
};
|
|
12
23
|
}
|
|
13
24
|
case "component": {
|
|
25
|
+
const joinTableName = getComponentJoinTableName(contentType.collectionName);
|
|
26
|
+
const joinColumnEntityName = identifiers.getJoinColumnAttributeIdName(ENTITY);
|
|
27
|
+
const joinColumnInverseName = identifiers.getJoinColumnAttributeIdName(
|
|
28
|
+
COMPONENT_INVERSE_COLUMN_NAME
|
|
29
|
+
);
|
|
14
30
|
return {
|
|
15
31
|
type: "relation",
|
|
16
32
|
relation: attribute.repeatable === true ? "oneToMany" : "oneToOne",
|
|
@@ -18,45 +34,50 @@ const transformAttribute = (name, attribute, contentType) => {
|
|
|
18
34
|
// We need the join table name to be deterministic,
|
|
19
35
|
// We need to allow passing the join table name as an option
|
|
20
36
|
joinTable: {
|
|
21
|
-
name:
|
|
37
|
+
name: joinTableName,
|
|
22
38
|
joinColumn: {
|
|
23
|
-
name:
|
|
24
|
-
referencedColumn:
|
|
39
|
+
name: joinColumnEntityName,
|
|
40
|
+
referencedColumn: id
|
|
25
41
|
},
|
|
26
42
|
inverseJoinColumn: {
|
|
27
|
-
name:
|
|
28
|
-
referencedColumn:
|
|
43
|
+
name: joinColumnInverseName,
|
|
44
|
+
referencedColumn: id
|
|
29
45
|
},
|
|
30
46
|
on: {
|
|
31
47
|
field: name
|
|
32
48
|
},
|
|
33
|
-
orderColumnName:
|
|
49
|
+
orderColumnName: order,
|
|
34
50
|
orderBy: {
|
|
35
51
|
order: "asc"
|
|
36
52
|
},
|
|
37
|
-
pivotColumns: [
|
|
53
|
+
pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, COMPONENT_TYPE_COLUMN]
|
|
38
54
|
}
|
|
39
55
|
};
|
|
40
56
|
}
|
|
41
57
|
case "dynamiczone": {
|
|
58
|
+
const joinTableName = getDzJoinTableName(contentType.collectionName);
|
|
59
|
+
const joinColumnEntityName = identifiers.getJoinColumnAttributeIdName(ENTITY);
|
|
60
|
+
const joinColumnInverseName = identifiers.getJoinColumnAttributeIdName(
|
|
61
|
+
COMPONENT_INVERSE_COLUMN_NAME
|
|
62
|
+
);
|
|
42
63
|
return {
|
|
43
64
|
type: "relation",
|
|
44
65
|
relation: "morphToMany",
|
|
45
66
|
// TODO: handle restrictions at some point
|
|
46
67
|
// target: attribute.components,
|
|
47
68
|
joinTable: {
|
|
48
|
-
name:
|
|
69
|
+
name: joinTableName,
|
|
49
70
|
joinColumn: {
|
|
50
|
-
name:
|
|
51
|
-
referencedColumn:
|
|
71
|
+
name: joinColumnEntityName,
|
|
72
|
+
referencedColumn: id
|
|
52
73
|
},
|
|
53
74
|
morphColumn: {
|
|
54
75
|
idColumn: {
|
|
55
|
-
name:
|
|
56
|
-
referencedColumn:
|
|
76
|
+
name: joinColumnInverseName,
|
|
77
|
+
referencedColumn: id
|
|
57
78
|
},
|
|
58
79
|
typeColumn: {
|
|
59
|
-
name:
|
|
80
|
+
name: COMPONENT_TYPE_COLUMN
|
|
60
81
|
},
|
|
61
82
|
typeField: "__component"
|
|
62
83
|
},
|
|
@@ -66,7 +87,7 @@ const transformAttribute = (name, attribute, contentType) => {
|
|
|
66
87
|
orderBy: {
|
|
67
88
|
order: "asc"
|
|
68
89
|
},
|
|
69
|
-
pivotColumns: [
|
|
90
|
+
pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, COMPONENT_TYPE_COLUMN]
|
|
70
91
|
}
|
|
71
92
|
};
|
|
72
93
|
}
|
|
@@ -84,41 +105,44 @@ const transformAttributes = (contentType) => {
|
|
|
84
105
|
}, {});
|
|
85
106
|
};
|
|
86
107
|
const hasComponentsOrDz = (contentType) => {
|
|
87
|
-
return Object.values(contentType.attributes).some(
|
|
108
|
+
return Object.values(contentType.attributes || {}).some(
|
|
88
109
|
({ type }) => type === "dynamiczone" || type === "component"
|
|
89
110
|
);
|
|
90
111
|
};
|
|
91
112
|
const createDocumentId = createId;
|
|
92
113
|
const createCompoLinkModel = (contentType) => {
|
|
93
|
-
const name =
|
|
114
|
+
const name = getComponentJoinTableName(contentType.collectionName);
|
|
115
|
+
const entityId = identifiers.getJoinColumnAttributeIdName(ENTITY);
|
|
116
|
+
const componentId = identifiers.getJoinColumnAttributeIdName(COMPONENT_INVERSE_COLUMN_NAME);
|
|
117
|
+
const fkIndex = identifiers.getFkIndexName([contentType.collectionName, ENTITY]);
|
|
94
118
|
return {
|
|
95
119
|
// TODO: make sure there can't be any conflicts with a prefix
|
|
96
120
|
singularName: name,
|
|
97
121
|
uid: name,
|
|
98
122
|
tableName: name,
|
|
99
123
|
attributes: {
|
|
100
|
-
id: {
|
|
124
|
+
[id]: {
|
|
101
125
|
type: "increments"
|
|
102
126
|
},
|
|
103
|
-
|
|
127
|
+
[entityId]: {
|
|
104
128
|
type: "integer",
|
|
105
129
|
column: {
|
|
106
130
|
unsigned: true
|
|
107
131
|
}
|
|
108
132
|
},
|
|
109
|
-
|
|
133
|
+
[componentId]: {
|
|
110
134
|
type: "integer",
|
|
111
135
|
column: {
|
|
112
136
|
unsigned: true
|
|
113
137
|
}
|
|
114
138
|
},
|
|
115
|
-
|
|
139
|
+
[COMPONENT_TYPE_COLUMN]: {
|
|
116
140
|
type: "string"
|
|
117
141
|
},
|
|
118
|
-
field: {
|
|
142
|
+
[field]: {
|
|
119
143
|
type: "string"
|
|
120
144
|
},
|
|
121
|
-
order: {
|
|
145
|
+
[order]: {
|
|
122
146
|
type: "float",
|
|
123
147
|
column: {
|
|
124
148
|
unsigned: true,
|
|
@@ -128,29 +152,30 @@ const createCompoLinkModel = (contentType) => {
|
|
|
128
152
|
},
|
|
129
153
|
indexes: [
|
|
130
154
|
{
|
|
131
|
-
name:
|
|
132
|
-
columns: [
|
|
155
|
+
name: identifiers.getIndexName([contentType.collectionName, field]),
|
|
156
|
+
columns: [field]
|
|
133
157
|
},
|
|
134
158
|
{
|
|
135
|
-
name:
|
|
136
|
-
columns: [
|
|
159
|
+
name: identifiers.getIndexName([contentType.collectionName, COMPONENT_TYPE_COLUMN]),
|
|
160
|
+
columns: [COMPONENT_TYPE_COLUMN]
|
|
137
161
|
},
|
|
138
162
|
{
|
|
139
|
-
name:
|
|
140
|
-
columns: [
|
|
163
|
+
name: fkIndex,
|
|
164
|
+
columns: [entityId]
|
|
141
165
|
},
|
|
142
166
|
{
|
|
143
|
-
|
|
144
|
-
|
|
167
|
+
// NOTE: since we don't include attribute names, we need to be careful not to create another unique index
|
|
168
|
+
name: identifiers.getUniqueIndexName([contentType.collectionName]),
|
|
169
|
+
columns: [entityId, componentId, field, COMPONENT_TYPE_COLUMN],
|
|
145
170
|
type: "unique"
|
|
146
171
|
}
|
|
147
172
|
],
|
|
148
173
|
foreignKeys: [
|
|
149
174
|
{
|
|
150
|
-
name:
|
|
151
|
-
columns: [
|
|
152
|
-
referencedColumns: [
|
|
153
|
-
referencedTable: contentType.collectionName,
|
|
175
|
+
name: fkIndex,
|
|
176
|
+
columns: [entityId],
|
|
177
|
+
referencedColumns: [id],
|
|
178
|
+
referencedTable: identifiers.getTableName(contentType.collectionName),
|
|
154
179
|
onDelete: "CASCADE"
|
|
155
180
|
}
|
|
156
181
|
]
|
|
@@ -159,12 +184,16 @@ const createCompoLinkModel = (contentType) => {
|
|
|
159
184
|
const transformContentTypesToModels = (contentTypes) => {
|
|
160
185
|
const models = [];
|
|
161
186
|
contentTypes.forEach((contentType) => {
|
|
187
|
+
assert(contentType.collectionName, 'Content type "collectionName" is required');
|
|
188
|
+
assert(contentType.modelName, 'Content type "modelName" is required');
|
|
189
|
+
assert(contentType.uid, 'Content type "uid" is required');
|
|
162
190
|
const documentIdAttribute = contentType.modelType === "contentType" ? { documentId: { type: "string", default: createDocumentId } } : {};
|
|
163
|
-
const reservedAttributeNames = ["
|
|
164
|
-
|
|
165
|
-
|
|
191
|
+
const reservedAttributeNames = ["document_id", id];
|
|
192
|
+
Object.keys(contentType.attributes || {}).forEach((attributeName) => {
|
|
193
|
+
const snakeCasedAttributeName = _.snakeCase(attributeName);
|
|
194
|
+
if (reservedAttributeNames.includes(snakeCasedAttributeName)) {
|
|
166
195
|
throw new Error(
|
|
167
|
-
`The attribute "${
|
|
196
|
+
`The attribute "${attributeName}" is reserved and cannot be used in a model. Please rename "${contentType.modelName}" attribute "${attributeName}" to something else.`
|
|
168
197
|
);
|
|
169
198
|
}
|
|
170
199
|
});
|
|
@@ -172,13 +201,12 @@ const transformContentTypesToModels = (contentTypes) => {
|
|
|
172
201
|
const compoLinkModel = createCompoLinkModel(contentType);
|
|
173
202
|
models.push(compoLinkModel);
|
|
174
203
|
}
|
|
175
|
-
assert(contentType.collectionName, "Collection name is required");
|
|
176
204
|
const model = {
|
|
177
205
|
uid: contentType.uid,
|
|
178
206
|
singularName: contentType.modelName,
|
|
179
|
-
tableName: contentType.collectionName,
|
|
207
|
+
tableName: identifiers.getTableName(contentType.collectionName),
|
|
180
208
|
attributes: {
|
|
181
|
-
id: {
|
|
209
|
+
[id]: {
|
|
182
210
|
type: "increments"
|
|
183
211
|
},
|
|
184
212
|
...documentIdAttribute,
|
|
@@ -190,7 +218,17 @@ const transformContentTypesToModels = (contentTypes) => {
|
|
|
190
218
|
return models;
|
|
191
219
|
};
|
|
192
220
|
export {
|
|
221
|
+
COMPONENT_INVERSE_COLUMN_NAME,
|
|
222
|
+
COMPONENT_JOIN_TABLE_SUFFIX,
|
|
223
|
+
COMPONENT_TYPE_COLUMN,
|
|
224
|
+
DZ_JOIN_TABLE_SUFFIX,
|
|
225
|
+
ENTITY,
|
|
193
226
|
createDocumentId,
|
|
227
|
+
getComponentJoinTableName,
|
|
228
|
+
getDzJoinTableName,
|
|
229
|
+
hasComponentsOrDz,
|
|
230
|
+
transformAttribute,
|
|
231
|
+
transformAttributes,
|
|
194
232
|
transformContentTypesToModels
|
|
195
233
|
};
|
|
196
234
|
//# sourceMappingURL=transform-content-types-to-models.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-content-types-to-models.mjs","sources":["../../src/utils/transform-content-types-to-models.ts"],"sourcesContent":["import { Model } from '@strapi/database';\nimport { Schema, Attribute } from '@strapi/types';\nimport { createId } from '@paralleldrive/cuid2';\nimport assert from 'node:assert';\n\nconst transformAttribute = (\n name: string,\n attribute: Attribute.Any,\n contentType: Schema.ContentType\n) => {\n switch (attribute.type) {\n case 'media': {\n return {\n type: 'relation',\n relation: attribute.multiple === true ? 'morphMany' : 'morphOne',\n target: 'plugin::upload.file',\n morphBy: 'related',\n };\n }\n case 'component': {\n return {\n type: 'relation',\n relation: attribute.repeatable === true ? 'oneToMany' : 'oneToOne',\n target: attribute.component,\n\n // We need the join table name to be deterministic,\n // We need to allow passing the join table name as an option\n joinTable: {\n name: `${contentType.collectionName}_components`,\n joinColumn: {\n name: 'entity_id',\n referencedColumn: 'id',\n },\n inverseJoinColumn: {\n name: 'component_id',\n referencedColumn: 'id',\n },\n on: {\n field: name,\n },\n orderColumnName: 'order',\n orderBy: {\n order: 'asc',\n },\n pivotColumns: ['entity_id', 'component_id', 'field', 'component_type'],\n },\n };\n }\n case 'dynamiczone': {\n return {\n type: 'relation',\n relation: 'morphToMany',\n // TODO: handle restrictions at some point\n // target: attribute.components,\n joinTable: {\n name: `${contentType.collectionName}_components`,\n joinColumn: {\n name: 'entity_id',\n referencedColumn: 'id',\n },\n morphColumn: {\n idColumn: {\n name: 'component_id',\n referencedColumn: 'id',\n },\n typeColumn: {\n name: 'component_type',\n },\n typeField: '__component',\n },\n on: {\n field: name,\n },\n orderBy: {\n order: 'asc',\n },\n pivotColumns: ['entity_id', 'component_id', 'field', 'component_type'],\n },\n };\n }\n default: {\n return attribute;\n }\n }\n};\n\nconst transformAttributes = (contentType: Schema.ContentType) => {\n return Object.keys(contentType.attributes! || {}).reduce((attrs, attrName) => {\n return {\n ...attrs,\n [attrName]: transformAttribute(attrName, contentType.attributes[attrName]!, contentType),\n };\n }, {});\n};\n\nconst hasComponentsOrDz = (contentType: Schema.ContentType) => {\n return Object.values(contentType.attributes).some(\n ({ type }) => type === 'dynamiczone' || type === 'component'\n );\n};\n\nexport const createDocumentId = createId;\n\nconst createCompoLinkModel = (contentType: Schema.ContentType): Model => {\n const name = `${contentType.collectionName}_components`;\n\n return {\n // TODO: make sure there can't be any conflicts with a prefix\n singularName: name,\n uid: name,\n tableName: name,\n attributes: {\n id: {\n type: 'increments',\n },\n entity_id: {\n type: 'integer',\n column: {\n unsigned: true,\n },\n },\n component_id: {\n type: 'integer',\n column: {\n unsigned: true,\n },\n },\n component_type: {\n type: 'string',\n },\n field: {\n type: 'string',\n },\n order: {\n type: 'float',\n column: {\n unsigned: true,\n defaultTo: null,\n },\n },\n },\n indexes: [\n {\n name: `${contentType.collectionName}_field_index`,\n columns: ['field'],\n },\n {\n name: `${contentType.collectionName}_component_type_index`,\n columns: ['component_type'],\n },\n {\n name: `${contentType.collectionName}_entity_fk`,\n columns: ['entity_id'],\n },\n {\n name: `${contentType.collectionName}_unique`,\n columns: ['entity_id', 'component_id', 'field', 'component_type'],\n type: 'unique',\n },\n ],\n foreignKeys: [\n {\n name: `${contentType.collectionName}_entity_fk`,\n columns: ['entity_id'],\n referencedColumns: ['id'],\n referencedTable: contentType.collectionName!,\n onDelete: 'CASCADE',\n },\n ],\n };\n};\n\nexport const transformContentTypesToModels = (contentTypes: Schema.ContentType[]): Model[] => {\n const models: Model[] = [];\n\n contentTypes.forEach((contentType) => {\n // Add document id to content types\n // as it is not documented\n const documentIdAttribute: Record<string, Attribute.Any> =\n contentType.modelType === 'contentType'\n ? { documentId: { type: 'string', default: createDocumentId } }\n : {};\n\n // Prevent user from creating a documentId attribute\n const reservedAttributeNames = ['documentId', 'document_id', 'id'];\n reservedAttributeNames.forEach((reservedAttributeName) => {\n if (reservedAttributeName in contentType.attributes) {\n throw new Error(\n `The attribute \"${reservedAttributeName}\" is reserved and cannot be used in a model` +\n `Please rename \"${contentType.modelName}\" attribute \"${reservedAttributeName}\" to something else.`\n );\n }\n });\n\n if (hasComponentsOrDz(contentType)) {\n const compoLinkModel = createCompoLinkModel(contentType);\n models.push(compoLinkModel);\n }\n\n assert(contentType.collectionName, 'Collection name is required');\n\n const model: Model = {\n uid: contentType.uid,\n singularName: contentType.modelName,\n tableName: contentType.collectionName,\n attributes: {\n id: {\n type: 'increments',\n },\n ...documentIdAttribute,\n ...transformAttributes(contentType),\n },\n };\n\n models.push(model);\n });\n\n return models;\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transform-content-types-to-models.mjs","sources":["../../src/utils/transform-content-types-to-models.ts"],"sourcesContent":["import { type Model, utils } from '@strapi/database';\nimport { Schema, Attribute } from '@strapi/types';\nimport { createId } from '@paralleldrive/cuid2';\nimport assert from 'node:assert';\nimport _ from 'lodash/fp';\n\nconst { identifiers } = utils;\n\n/**\n * Because strapi/database models don't know about things like components or dynamic zones, we use this file to convert them\n * to a relations format that it recognizes\n *\n * Therefore we have to keep an additional set of helpers/extensions to the database naming methods\n */\n\nexport const COMPONENT_JOIN_TABLE_SUFFIX = 'components';\nexport const DZ_JOIN_TABLE_SUFFIX = 'components';\nexport const COMPONENT_INVERSE_COLUMN_NAME = 'component';\nexport const COMPONENT_TYPE_COLUMN = 'component_type';\nexport const ENTITY = 'entity';\n\nexport const getComponentJoinTableName = (collectionName: string) =>\n identifiers.getTableName(collectionName, { suffix: COMPONENT_JOIN_TABLE_SUFFIX });\n\nexport const getDzJoinTableName = (collectionName: string) =>\n identifiers.getTableName(collectionName, { suffix: DZ_JOIN_TABLE_SUFFIX });\n\nconst { ID_COLUMN: id, FIELD_COLUMN: field, ORDER_COLUMN: order } = identifiers;\n\nexport type LoadedContentTypeModel = Schema.ContentType &\n Required<Pick<Schema.ContentType, 'collectionName' | 'uid' | 'modelName'>>;\n\n// Transforms an attribute (particularly for relation types) into the format that strapi/database accepts\nexport const transformAttribute = (\n name: string,\n attribute: Attribute.Any,\n contentType: LoadedContentTypeModel\n) => {\n switch (attribute.type) {\n case 'media': {\n return {\n type: 'relation',\n relation: attribute.multiple === true ? 'morphMany' : 'morphOne',\n target: 'plugin::upload.file',\n morphBy: 'related',\n };\n }\n case 'component': {\n const joinTableName = getComponentJoinTableName(contentType.collectionName);\n const joinColumnEntityName = identifiers.getJoinColumnAttributeIdName(ENTITY);\n const joinColumnInverseName = identifiers.getJoinColumnAttributeIdName(\n COMPONENT_INVERSE_COLUMN_NAME\n );\n\n return {\n type: 'relation',\n relation: attribute.repeatable === true ? 'oneToMany' : 'oneToOne',\n target: attribute.component,\n\n // We need the join table name to be deterministic,\n // We need to allow passing the join table name as an option\n joinTable: {\n name: joinTableName,\n joinColumn: {\n name: joinColumnEntityName,\n referencedColumn: id,\n },\n inverseJoinColumn: {\n name: joinColumnInverseName,\n referencedColumn: id,\n },\n on: {\n field: name,\n },\n orderColumnName: order,\n orderBy: {\n order: 'asc',\n },\n pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, COMPONENT_TYPE_COLUMN],\n },\n };\n }\n case 'dynamiczone': {\n const joinTableName = getDzJoinTableName(contentType.collectionName);\n const joinColumnEntityName = identifiers.getJoinColumnAttributeIdName(ENTITY);\n const joinColumnInverseName = identifiers.getJoinColumnAttributeIdName(\n COMPONENT_INVERSE_COLUMN_NAME\n );\n\n return {\n type: 'relation',\n relation: 'morphToMany',\n // TODO: handle restrictions at some point\n // target: attribute.components,\n joinTable: {\n name: joinTableName,\n joinColumn: {\n name: joinColumnEntityName,\n referencedColumn: id,\n },\n morphColumn: {\n idColumn: {\n name: joinColumnInverseName,\n referencedColumn: id,\n },\n typeColumn: {\n name: COMPONENT_TYPE_COLUMN,\n },\n typeField: '__component',\n },\n on: {\n field: name,\n },\n orderBy: {\n order: 'asc',\n },\n pivotColumns: [joinColumnEntityName, joinColumnInverseName, field, COMPONENT_TYPE_COLUMN],\n },\n };\n }\n default: {\n return attribute;\n }\n }\n};\n\nexport const transformAttributes = (contentType: LoadedContentTypeModel) => {\n return Object.keys(contentType.attributes! || {}).reduce((attrs, attrName) => {\n return {\n ...attrs,\n [attrName]: transformAttribute(attrName, contentType.attributes[attrName]!, contentType),\n };\n }, {});\n};\n\nexport const hasComponentsOrDz = (\n contentType: LoadedContentTypeModel\n): contentType is LoadedContentTypeModel & { type: 'dynamiczone' | 'component' } => {\n return Object.values(contentType.attributes || {}).some(\n ({ type }) => type === 'dynamiczone' || type === 'component'\n );\n};\n\nexport const createDocumentId = createId;\n\n// Creates the\nconst createCompoLinkModel = (contentType: LoadedContentTypeModel): Model => {\n const name = getComponentJoinTableName(contentType.collectionName);\n\n const entityId = identifiers.getJoinColumnAttributeIdName(ENTITY);\n const componentId = identifiers.getJoinColumnAttributeIdName(COMPONENT_INVERSE_COLUMN_NAME);\n const fkIndex = identifiers.getFkIndexName([contentType.collectionName, ENTITY]);\n\n return {\n // TODO: make sure there can't be any conflicts with a prefix\n singularName: name,\n uid: name,\n tableName: name,\n attributes: {\n [id]: {\n type: 'increments',\n },\n [entityId]: {\n type: 'integer',\n column: {\n unsigned: true,\n },\n },\n [componentId]: {\n type: 'integer',\n column: {\n unsigned: true,\n },\n },\n [COMPONENT_TYPE_COLUMN]: {\n type: 'string',\n },\n [field]: {\n type: 'string',\n },\n [order]: {\n type: 'float',\n column: {\n unsigned: true,\n defaultTo: null,\n },\n },\n },\n indexes: [\n {\n name: identifiers.getIndexName([contentType.collectionName, field]),\n columns: [field],\n },\n {\n name: identifiers.getIndexName([contentType.collectionName, COMPONENT_TYPE_COLUMN]),\n columns: [COMPONENT_TYPE_COLUMN],\n },\n {\n name: fkIndex,\n columns: [entityId],\n },\n {\n // NOTE: since we don't include attribute names, we need to be careful not to create another unique index\n name: identifiers.getUniqueIndexName([contentType.collectionName]),\n columns: [entityId, componentId, field, COMPONENT_TYPE_COLUMN],\n type: 'unique',\n },\n ],\n foreignKeys: [\n {\n name: fkIndex,\n columns: [entityId],\n referencedColumns: [id],\n referencedTable: identifiers.getTableName(contentType.collectionName),\n onDelete: 'CASCADE',\n },\n ],\n };\n};\n\nexport const transformContentTypesToModels = (contentTypes: LoadedContentTypeModel[]): Model[] => {\n const models: Model[] = [];\n\n contentTypes.forEach((contentType) => {\n assert(contentType.collectionName, 'Content type \"collectionName\" is required');\n assert(contentType.modelName, 'Content type \"modelName\" is required');\n assert(contentType.uid, 'Content type \"uid\" is required');\n\n // Add document id to content types\n // as it is not documented\n const documentIdAttribute: Record<string, Attribute.Any> =\n contentType.modelType === 'contentType'\n ? { documentId: { type: 'string', default: createDocumentId } }\n : {};\n\n // TODO: this needs to be combined with getReservedNames, we should not be maintaining two lists\n // Prevent user from creating a documentId attribute\n const reservedAttributeNames = ['document_id', id];\n Object.keys(contentType.attributes || {}).forEach((attributeName) => {\n const snakeCasedAttributeName = _.snakeCase(attributeName);\n if (reservedAttributeNames.includes(snakeCasedAttributeName)) {\n throw new Error(\n `The attribute \"${attributeName}\" is reserved and cannot be used in a model. Please rename \"${contentType.modelName}\" attribute \"${attributeName}\" to something else.`\n );\n }\n });\n\n if (hasComponentsOrDz(contentType)) {\n const compoLinkModel = createCompoLinkModel(contentType);\n models.push(compoLinkModel);\n }\n\n const model: Model = {\n uid: contentType.uid,\n singularName: contentType.modelName,\n tableName: identifiers.getTableName(contentType.collectionName),\n attributes: {\n [id]: {\n type: 'increments',\n },\n ...documentIdAttribute,\n ...transformAttributes(contentType),\n },\n };\n\n models.push(model);\n });\n\n return models;\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/core",
|
|
3
|
-
"version": "0.0.0-experimental.
|
|
3
|
+
"version": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7",
|
|
4
4
|
"description": "Core of Strapi",
|
|
5
5
|
"homepage": "https://strapi.io",
|
|
6
6
|
"bugs": {
|
|
@@ -55,16 +55,16 @@
|
|
|
55
55
|
"@koa/cors": "3.4.3",
|
|
56
56
|
"@koa/router": "10.1.1",
|
|
57
57
|
"@paralleldrive/cuid2": "2.2.2",
|
|
58
|
-
"@strapi/admin": "0.0.0-experimental.
|
|
59
|
-
"@strapi/database": "0.0.0-experimental.
|
|
60
|
-
"@strapi/generate-new": "0.0.0-experimental.
|
|
61
|
-
"@strapi/generators": "0.0.0-experimental.
|
|
62
|
-
"@strapi/logger": "0.0.0-experimental.
|
|
63
|
-
"@strapi/pack-up": "0.0.0-experimental.
|
|
64
|
-
"@strapi/permissions": "0.0.0-experimental.
|
|
65
|
-
"@strapi/types": "0.0.0-experimental.
|
|
66
|
-
"@strapi/typescript-utils": "0.0.0-experimental.
|
|
67
|
-
"@strapi/utils": "0.0.0-experimental.
|
|
58
|
+
"@strapi/admin": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7",
|
|
59
|
+
"@strapi/database": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7",
|
|
60
|
+
"@strapi/generate-new": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7",
|
|
61
|
+
"@strapi/generators": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7",
|
|
62
|
+
"@strapi/logger": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7",
|
|
63
|
+
"@strapi/pack-up": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7",
|
|
64
|
+
"@strapi/permissions": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7",
|
|
65
|
+
"@strapi/types": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7",
|
|
66
|
+
"@strapi/typescript-utils": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7",
|
|
67
|
+
"@strapi/utils": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7",
|
|
68
68
|
"bcryptjs": "2.4.3",
|
|
69
69
|
"boxen": "5.1.2",
|
|
70
70
|
"chalk": "4.1.2",
|
|
@@ -122,13 +122,13 @@
|
|
|
122
122
|
"@types/node": "18.18.4",
|
|
123
123
|
"@types/node-schedule": "2.1.0",
|
|
124
124
|
"@types/statuses": "2.0.1",
|
|
125
|
-
"eslint-config-custom": "0.0.0-experimental.
|
|
125
|
+
"eslint-config-custom": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7",
|
|
126
126
|
"supertest": "6.3.3",
|
|
127
|
-
"tsconfig": "0.0.0-experimental.
|
|
127
|
+
"tsconfig": "0.0.0-experimental.651a6b8ded3c452fedf2a8598f08c51c214e6cf7"
|
|
128
128
|
},
|
|
129
129
|
"engines": {
|
|
130
130
|
"node": ">=18.0.0 <=20.x.x",
|
|
131
131
|
"npm": ">=6.0.0"
|
|
132
132
|
},
|
|
133
|
-
"gitHead": "
|
|
133
|
+
"gitHead": "651a6b8ded3c452fedf2a8598f08c51c214e6cf7"
|
|
134
134
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-fetch-params.d.ts","sourceRoot":"","sources":["../../../src/core-api/service/get-fetch-params.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,cAAc;;CAK1B,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const strapiUtils = require("@strapi/utils");
|
|
4
|
-
const {
|
|
5
|
-
constants: { DP_PUB_STATE_LIVE }
|
|
6
|
-
} = strapiUtils.contentTypes;
|
|
7
|
-
const getFetchParams = (params = {}) => {
|
|
8
|
-
return {
|
|
9
|
-
publicationState: DP_PUB_STATE_LIVE,
|
|
10
|
-
...params
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
exports.getFetchParams = getFetchParams;
|
|
14
|
-
//# sourceMappingURL=get-fetch-params.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-fetch-params.js","sources":["../../../src/core-api/service/get-fetch-params.ts"],"sourcesContent":["import { contentTypes as contentTypeUtils } from '@strapi/utils';\n\nconst {\n constants: { DP_PUB_STATE_LIVE },\n} = contentTypeUtils;\n\n/**\n * Create default fetch params\n */\nexport const getFetchParams = (params = {}) => {\n return {\n publicationState: DP_PUB_STATE_LIVE,\n ...params,\n };\n};\n"],"names":["contentTypeUtils"],"mappings":";;;AAEA,MAAM;AAAA,EACJ,WAAW,EAAE,kBAAkB;AACjC,IAAIA;AAKG,MAAM,iBAAiB,CAAC,SAAS,OAAO;AACtC,SAAA;AAAA,IACL,kBAAkB;AAAA,IAClB,GAAG;AAAA,EAAA;AAEP;;"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { contentTypes } from "@strapi/utils";
|
|
2
|
-
const {
|
|
3
|
-
constants: { DP_PUB_STATE_LIVE }
|
|
4
|
-
} = contentTypes;
|
|
5
|
-
const getFetchParams = (params = {}) => {
|
|
6
|
-
return {
|
|
7
|
-
publicationState: DP_PUB_STATE_LIVE,
|
|
8
|
-
...params
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
export {
|
|
12
|
-
getFetchParams
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=get-fetch-params.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-fetch-params.mjs","sources":["../../../src/core-api/service/get-fetch-params.ts"],"sourcesContent":["import { contentTypes as contentTypeUtils } from '@strapi/utils';\n\nconst {\n constants: { DP_PUB_STATE_LIVE },\n} = contentTypeUtils;\n\n/**\n * Create default fetch params\n */\nexport const getFetchParams = (params = {}) => {\n return {\n publicationState: DP_PUB_STATE_LIVE,\n ...params,\n };\n};\n"],"names":["contentTypeUtils"],"mappings":";AAEA,MAAM;AAAA,EACJ,WAAW,EAAE,kBAAkB;AACjC,IAAIA;AAKG,MAAM,iBAAiB,CAAC,SAAS,OAAO;AACtC,SAAA;AAAA,IACL,kBAAkB;AAAA,IAClB,GAAG;AAAA,EAAA;AAEP;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"document-service.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/document-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,SAAS,EAAE,MAAM,eAAe,CAAC;AAK1D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB,WACxB,MAAM;eACkB,GAAG;MAClC,UAAU,OAsIZ,CAAC"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const documentEngine = require("./document-engine.js");
|
|
4
|
-
const index$1 = require("./middlewares/index.js");
|
|
5
|
-
const index = require("./middlewares/defaults/index.js");
|
|
6
|
-
const createDocumentService = (strapi, { defaults = {} } = {}) => {
|
|
7
|
-
const documents = documentEngine({ strapi, db: strapi.db });
|
|
8
|
-
const middlewareManager = index$1.default();
|
|
9
|
-
index.loadDefaultMiddlewares(middlewareManager);
|
|
10
|
-
function create(uid) {
|
|
11
|
-
return {
|
|
12
|
-
async findMany(params = {}) {
|
|
13
|
-
return strapi.db?.transaction?.(
|
|
14
|
-
async () => middlewareManager.run(
|
|
15
|
-
{ action: "findMany", uid, params, options: {} },
|
|
16
|
-
({ params: params2 }) => documents.findMany(uid, params2)
|
|
17
|
-
)
|
|
18
|
-
);
|
|
19
|
-
},
|
|
20
|
-
async findFirst(params = {}) {
|
|
21
|
-
return strapi.db?.transaction?.(
|
|
22
|
-
async () => middlewareManager.run(
|
|
23
|
-
{ action: "findFirst", uid, params, options: {} },
|
|
24
|
-
({ params: params2 }) => documents.findFirst(uid, params2)
|
|
25
|
-
)
|
|
26
|
-
);
|
|
27
|
-
},
|
|
28
|
-
async findOne(id, params = {}) {
|
|
29
|
-
return strapi.db?.transaction?.(
|
|
30
|
-
async () => middlewareManager.run(
|
|
31
|
-
{ action: "findOne", uid, params, options: { id } },
|
|
32
|
-
({ params: params2 }) => documents.findOne(uid, id, params2)
|
|
33
|
-
)
|
|
34
|
-
);
|
|
35
|
-
},
|
|
36
|
-
async delete(id, params = {}) {
|
|
37
|
-
return strapi.db?.transaction?.(
|
|
38
|
-
async () => middlewareManager.run(
|
|
39
|
-
{ action: "delete", uid, params, options: { id } },
|
|
40
|
-
({ params: params2 }) => documents.delete(uid, id, params2)
|
|
41
|
-
)
|
|
42
|
-
);
|
|
43
|
-
},
|
|
44
|
-
async deleteMany(params = {}) {
|
|
45
|
-
return strapi.db?.transaction?.(
|
|
46
|
-
async () => middlewareManager.run(
|
|
47
|
-
{ action: "deleteMany", uid, params, options: {} },
|
|
48
|
-
({ params: params2 }) => documents.deleteMany(uid, params2)
|
|
49
|
-
)
|
|
50
|
-
);
|
|
51
|
-
},
|
|
52
|
-
async create(params = {}) {
|
|
53
|
-
return strapi.db?.transaction?.(
|
|
54
|
-
async () => middlewareManager.run(
|
|
55
|
-
{ action: "create", uid, params, options: {} },
|
|
56
|
-
({ params: params2 }) => documents.create(uid, params2)
|
|
57
|
-
)
|
|
58
|
-
);
|
|
59
|
-
},
|
|
60
|
-
async clone(id, params = {}) {
|
|
61
|
-
return strapi.db?.transaction?.(
|
|
62
|
-
async () => middlewareManager.run(
|
|
63
|
-
{ action: "clone", uid, params, options: { id } },
|
|
64
|
-
({ params: params2 }) => documents.clone(uid, id, params2)
|
|
65
|
-
)
|
|
66
|
-
);
|
|
67
|
-
},
|
|
68
|
-
async update(id, params = {}) {
|
|
69
|
-
return strapi.db?.transaction?.(
|
|
70
|
-
async () => middlewareManager.run(
|
|
71
|
-
{ action: "update", uid, params, options: { id } },
|
|
72
|
-
({ params: params2 }) => documents.update(uid, id, params2)
|
|
73
|
-
)
|
|
74
|
-
);
|
|
75
|
-
},
|
|
76
|
-
async count(params = {}) {
|
|
77
|
-
return strapi.db?.transaction?.(
|
|
78
|
-
async () => middlewareManager.run(
|
|
79
|
-
{ action: "count", uid, params, options: {} },
|
|
80
|
-
({ params: params2 }) => documents.count(uid, params2)
|
|
81
|
-
)
|
|
82
|
-
);
|
|
83
|
-
},
|
|
84
|
-
async publish(id, params = {}) {
|
|
85
|
-
return strapi.db?.transaction?.(
|
|
86
|
-
async () => middlewareManager.run(
|
|
87
|
-
{ action: "publish", uid, params, options: { id } },
|
|
88
|
-
({ params: params2 }) => documents.publish(uid, id, params2)
|
|
89
|
-
)
|
|
90
|
-
);
|
|
91
|
-
},
|
|
92
|
-
async unpublish(id, params = {}) {
|
|
93
|
-
return strapi.db?.transaction?.(
|
|
94
|
-
async () => middlewareManager.run(
|
|
95
|
-
{ action: "unpublish", uid, params, options: { id } },
|
|
96
|
-
({ params: params2 }) => documents.unpublish(uid, id, params2)
|
|
97
|
-
)
|
|
98
|
-
);
|
|
99
|
-
},
|
|
100
|
-
async discardDraft(id, params = {}) {
|
|
101
|
-
return strapi.db?.transaction?.(
|
|
102
|
-
async () => middlewareManager.run(
|
|
103
|
-
{ action: "discardDraft", uid, params, options: { id } },
|
|
104
|
-
({ params: params2 }) => documents.discardDraft(uid, id, params2)
|
|
105
|
-
)
|
|
106
|
-
);
|
|
107
|
-
},
|
|
108
|
-
// @ts-expect-error - TODO: Fix this
|
|
109
|
-
with(params) {
|
|
110
|
-
return createDocumentService(strapi, {
|
|
111
|
-
defaults: { ...defaults, ...params }
|
|
112
|
-
})(uid);
|
|
113
|
-
},
|
|
114
|
-
use(action, cb, opts) {
|
|
115
|
-
middlewareManager.add(uid, action, cb, opts);
|
|
116
|
-
return this;
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
Object.assign(create, {
|
|
121
|
-
use(action, cb, opts) {
|
|
122
|
-
middlewareManager.add("_all", action, cb, opts);
|
|
123
|
-
return create;
|
|
124
|
-
},
|
|
125
|
-
middlewares: middlewareManager,
|
|
126
|
-
// NOTE : We should do this in a different way, where lifecycles are executed for the different methods
|
|
127
|
-
...documents
|
|
128
|
-
});
|
|
129
|
-
return create;
|
|
130
|
-
};
|
|
131
|
-
exports.createDocumentService = createDocumentService;
|
|
132
|
-
//# sourceMappingURL=document-service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"document-service.js","sources":["../../../src/services/document-service/document-service.ts"],"sourcesContent":["import { Strapi, Common, Documents } from '@strapi/types';\nimport createDocumentRepository from './document-engine';\nimport createMiddlewareManager from './middlewares';\nimport { loadDefaultMiddlewares } from './middlewares/defaults';\n\n/**\n * Repository to :\n * - Access documents via actions (findMany, findOne, create, update, delete, ...)\n * - Execute middlewares on document actions\n * - Apply default parameters to document actions\n *\n * @param strapi\n * @param options.defaults - Default parameters to apply to all actions\n * @param options.parent - Parent repository, used when creating a new repository with .with()\n * @returns DocumentService\n *\n * @example Access documents\n * const article = strapi.documents('api::article.article').create(params)\n * const allArticles = strapi.documents('api::article.article').findMany(params)\n *\n */\nexport const createDocumentService = (\n strapi: Strapi,\n { defaults = {} }: { defaults?: any } = {}\n): Documents.Service => {\n const documents = createDocumentRepository({ strapi, db: strapi.db! });\n\n const middlewareManager = createMiddlewareManager();\n loadDefaultMiddlewares(middlewareManager);\n\n function create<TContentTypeUID extends Common.UID.ContentType>(\n uid: TContentTypeUID\n ): Documents.ServiceInstance<TContentTypeUID> {\n return {\n async findMany(params = {} as any) {\n return strapi.db?.transaction?.(async () =>\n middlewareManager.run({ action: 'findMany', uid, params, options: {} }, ({ params }) =>\n documents.findMany(uid, params)\n )\n );\n },\n\n async findFirst(params = {} as any) {\n return strapi.db?.transaction?.(async () =>\n middlewareManager.run({ action: 'findFirst', uid, params, options: {} }, ({ params }) =>\n documents.findFirst(uid, params)\n )\n );\n },\n\n async findOne(id: string, params = {} as any) {\n return strapi.db?.transaction?.(async () =>\n middlewareManager.run({ action: 'findOne', uid, params, options: { id } }, ({ params }) =>\n documents.findOne(uid, id, params)\n )\n );\n },\n\n async delete(id: string, params = {} as any) {\n return strapi.db?.transaction?.(async () =>\n middlewareManager.run({ action: 'delete', uid, params, options: { id } }, ({ params }) =>\n documents.delete(uid, id, params)\n )\n );\n },\n\n async deleteMany(params = {} as any) {\n return strapi.db?.transaction?.(async () =>\n middlewareManager.run({ action: 'deleteMany', uid, params, options: {} }, ({ params }) =>\n documents.deleteMany(uid, params)\n )\n );\n },\n\n async create(params = {} as any) {\n return strapi.db?.transaction?.(async () =>\n middlewareManager.run({ action: 'create', uid, params, options: {} }, ({ params }) =>\n documents.create(uid, params)\n )\n );\n },\n\n async clone(id: string, params = {} as any) {\n return strapi.db?.transaction?.(async () =>\n middlewareManager.run({ action: 'clone', uid, params, options: { id } }, ({ params }) =>\n documents.clone(uid, id, params)\n )\n );\n },\n\n async update(id: string, params = {} as any) {\n return strapi.db?.transaction?.(async () =>\n middlewareManager.run({ action: 'update', uid, params, options: { id } }, ({ params }) =>\n documents.update(uid, id, params)\n )\n );\n },\n\n async count(params = {} as any) {\n return strapi.db?.transaction?.(async () =>\n middlewareManager.run({ action: 'count', uid, params, options: {} }, ({ params }) =>\n documents.count(uid, params)\n )\n );\n },\n\n async publish(id: string, params = {} as any) {\n return strapi.db?.transaction?.(async () =>\n middlewareManager.run({ action: 'publish', uid, params, options: { id } }, ({ params }) =>\n documents.publish(uid, id, params)\n )\n );\n },\n\n async unpublish(id: string, params = {} as any) {\n return strapi.db?.transaction?.(async () =>\n middlewareManager.run(\n { action: 'unpublish', uid, params, options: { id } },\n ({ params }) => documents.unpublish(uid, id, params)\n )\n );\n },\n\n async discardDraft(id: string, params = {} as any) {\n return strapi.db?.transaction?.(async () =>\n middlewareManager.run(\n { action: 'discardDraft', uid, params, options: { id } },\n ({ params }) => documents.discardDraft(uid, id, params)\n )\n );\n },\n\n // @ts-expect-error - TODO: Fix this\n with(params: object) {\n return createDocumentService(strapi, {\n defaults: { ...defaults, ...params },\n })(uid);\n },\n\n use(action, cb, opts) {\n middlewareManager.add(uid, action, cb, opts);\n return this;\n },\n };\n }\n\n Object.assign(create, {\n use(action: any, cb: any, opts?: any) {\n middlewareManager.add('_all', action, cb, opts);\n return create;\n },\n middlewares: middlewareManager,\n // NOTE : We should do this in a different way, where lifecycles are executed for the different methods\n ...documents,\n });\n\n // @ts-expect-error - TODO: Fix this\n return create;\n};\n"],"names":["createDocumentRepository","createMiddlewareManager","loadDefaultMiddlewares","params"],"mappings":"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"}
|