@strapi/database 5.12.0 → 5.12.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/dist/connection.js +43 -0
- package/dist/connection.js.map +1 -0
- package/dist/connection.mjs +41 -0
- package/dist/connection.mjs.map +1 -0
- package/dist/dialects/dialect.js +54 -0
- package/dist/dialects/dialect.js.map +1 -0
- package/dist/dialects/dialect.mjs +52 -0
- package/dist/dialects/dialect.mjs.map +1 -0
- package/dist/dialects/index.js +44 -0
- package/dist/dialects/index.js.map +1 -0
- package/dist/dialects/index.mjs +42 -0
- package/dist/dialects/index.mjs.map +1 -0
- package/dist/dialects/mysql/constants.js +8 -0
- package/dist/dialects/mysql/constants.js.map +1 -0
- package/dist/dialects/mysql/constants.mjs +5 -0
- package/dist/dialects/mysql/constants.mjs.map +1 -0
- package/dist/dialects/mysql/database-inspector.js +35 -0
- package/dist/dialects/mysql/database-inspector.js.map +1 -0
- package/dist/dialects/mysql/database-inspector.mjs +33 -0
- package/dist/dialects/mysql/database-inspector.mjs.map +1 -0
- package/dist/dialects/mysql/index.js +75 -0
- package/dist/dialects/mysql/index.js.map +1 -0
- package/dist/dialects/mysql/index.mjs +73 -0
- package/dist/dialects/mysql/index.mjs.map +1 -0
- package/dist/dialects/mysql/schema-inspector.js +297 -0
- package/dist/dialects/mysql/schema-inspector.js.map +1 -0
- package/dist/dialects/mysql/schema-inspector.mjs +295 -0
- package/dist/dialects/mysql/schema-inspector.mjs.map +1 -0
- package/dist/dialects/postgresql/index.js +62 -0
- package/dist/dialects/postgresql/index.js.map +1 -0
- package/dist/dialects/postgresql/index.mjs +60 -0
- package/dist/dialects/postgresql/index.mjs.map +1 -0
- package/dist/dialects/postgresql/schema-inspector.js +316 -0
- package/dist/dialects/postgresql/schema-inspector.js.map +1 -0
- package/dist/dialects/postgresql/schema-inspector.mjs +314 -0
- package/dist/dialects/postgresql/schema-inspector.mjs.map +1 -0
- package/dist/dialects/sqlite/index.js +82 -0
- package/dist/dialects/sqlite/index.js.map +1 -0
- package/dist/dialects/sqlite/index.mjs +80 -0
- package/dist/dialects/sqlite/index.mjs.map +1 -0
- package/dist/dialects/sqlite/schema-inspector.js +211 -0
- package/dist/dialects/sqlite/schema-inspector.js.map +1 -0
- package/dist/dialects/sqlite/schema-inspector.mjs +209 -0
- package/dist/dialects/sqlite/schema-inspector.mjs.map +1 -0
- package/dist/entity-manager/entity-repository.js +139 -0
- package/dist/entity-manager/entity-repository.js.map +1 -0
- package/dist/entity-manager/entity-repository.mjs +137 -0
- package/dist/entity-manager/entity-repository.mjs.map +1 -0
- package/dist/entity-manager/index.js +1186 -0
- package/dist/entity-manager/index.js.map +1 -0
- package/dist/entity-manager/index.mjs +1184 -0
- package/dist/entity-manager/index.mjs.map +1 -0
- package/dist/entity-manager/morph-relations.js +73 -0
- package/dist/entity-manager/morph-relations.js.map +1 -0
- package/dist/entity-manager/morph-relations.mjs +69 -0
- package/dist/entity-manager/morph-relations.mjs.map +1 -0
- package/dist/entity-manager/regular-relations.js +247 -0
- package/dist/entity-manager/regular-relations.js.map +1 -0
- package/dist/entity-manager/regular-relations.mjs +242 -0
- package/dist/entity-manager/regular-relations.mjs.map +1 -0
- package/dist/entity-manager/relations-orderer.js +221 -0
- package/dist/entity-manager/relations-orderer.js.map +1 -0
- package/dist/entity-manager/relations-orderer.mjs +218 -0
- package/dist/entity-manager/relations-orderer.mjs.map +1 -0
- package/dist/errors/database.js +13 -0
- package/dist/errors/database.js.map +1 -0
- package/dist/errors/database.mjs +11 -0
- package/dist/errors/database.mjs.map +1 -0
- package/dist/errors/index.js +18 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/index.mjs +7 -0
- package/dist/errors/index.mjs.map +1 -0
- package/dist/errors/invalid-date.js +13 -0
- package/dist/errors/invalid-date.js.map +1 -0
- package/dist/errors/invalid-date.mjs +11 -0
- package/dist/errors/invalid-date.mjs.map +1 -0
- package/dist/errors/invalid-datetime.js +13 -0
- package/dist/errors/invalid-datetime.js.map +1 -0
- package/dist/errors/invalid-datetime.mjs +11 -0
- package/dist/errors/invalid-datetime.mjs.map +1 -0
- package/dist/errors/invalid-relation.js +13 -0
- package/dist/errors/invalid-relation.js.map +1 -0
- package/dist/errors/invalid-relation.mjs +11 -0
- package/dist/errors/invalid-relation.mjs.map +1 -0
- package/dist/errors/invalid-time.js +13 -0
- package/dist/errors/invalid-time.js.map +1 -0
- package/dist/errors/invalid-time.mjs +11 -0
- package/dist/errors/invalid-time.mjs.map +1 -0
- package/dist/errors/not-null.js +17 -0
- package/dist/errors/not-null.js.map +1 -0
- package/dist/errors/not-null.mjs +15 -0
- package/dist/errors/not-null.mjs.map +1 -0
- package/dist/fields/biginteger.js +9 -0
- package/dist/fields/biginteger.js.map +1 -0
- package/dist/fields/biginteger.mjs +7 -0
- package/dist/fields/biginteger.mjs.map +1 -0
- package/dist/fields/boolean.js +48 -0
- package/dist/fields/boolean.js.map +1 -0
- package/dist/fields/boolean.mjs +46 -0
- package/dist/fields/boolean.mjs.map +1 -0
- package/dist/fields/date.js +16 -0
- package/dist/fields/date.js.map +1 -0
- package/dist/fields/date.mjs +14 -0
- package/dist/fields/date.mjs.map +1 -0
- package/dist/fields/datetime.js +37 -0
- package/dist/fields/datetime.js.map +1 -0
- package/dist/fields/datetime.mjs +16 -0
- package/dist/fields/datetime.mjs.map +1 -0
- package/dist/fields/field.js +16 -0
- package/dist/fields/field.js.map +1 -0
- package/dist/fields/field.mjs +14 -0
- package/dist/fields/field.mjs.map +1 -0
- package/dist/fields/index.js +45 -0
- package/dist/fields/index.js.map +1 -0
- package/dist/fields/index.mjs +43 -0
- package/dist/fields/index.mjs.map +1 -0
- package/dist/fields/json.js +36 -0
- package/dist/fields/json.js.map +1 -0
- package/dist/fields/json.mjs +34 -0
- package/dist/fields/json.mjs.map +1 -0
- package/dist/fields/number.js +20 -0
- package/dist/fields/number.js.map +1 -0
- package/dist/fields/number.mjs +18 -0
- package/dist/fields/number.mjs.map +1 -0
- package/dist/fields/shared/parsers.js +91 -0
- package/dist/fields/shared/parsers.js.map +1 -0
- package/dist/fields/shared/parsers.mjs +68 -0
- package/dist/fields/shared/parsers.mjs.map +1 -0
- package/dist/fields/string.js +16 -0
- package/dist/fields/string.js.map +1 -0
- package/dist/fields/string.mjs +14 -0
- package/dist/fields/string.mjs.map +1 -0
- package/dist/fields/time.js +17 -0
- package/dist/fields/time.js.map +1 -0
- package/dist/fields/time.mjs +15 -0
- package/dist/fields/time.mjs.map +1 -0
- package/dist/fields/timestamp.js +37 -0
- package/dist/fields/timestamp.js.map +1 -0
- package/dist/fields/timestamp.mjs +16 -0
- package/dist/fields/timestamp.mjs.map +1 -0
- package/dist/index.js +33 -8569
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +16 -8532
- package/dist/index.mjs.map +1 -1
- package/dist/lifecycles/index.js +73 -0
- package/dist/lifecycles/index.js.map +1 -0
- package/dist/lifecycles/index.mjs +71 -0
- package/dist/lifecycles/index.mjs.map +1 -0
- package/dist/lifecycles/subscribers/index.js +10 -0
- package/dist/lifecycles/subscribers/index.js.map +1 -0
- package/dist/lifecycles/subscribers/index.mjs +8 -0
- package/dist/lifecycles/subscribers/index.mjs.map +1 -0
- package/dist/lifecycles/subscribers/models-lifecycles.js +13 -0
- package/dist/lifecycles/subscribers/models-lifecycles.js.map +1 -0
- package/dist/lifecycles/subscribers/models-lifecycles.mjs +11 -0
- package/dist/lifecycles/subscribers/models-lifecycles.mjs.map +1 -0
- package/dist/lifecycles/subscribers/timestamps.js +55 -0
- package/dist/lifecycles/subscribers/timestamps.js.map +1 -0
- package/dist/lifecycles/subscribers/timestamps.mjs +53 -0
- package/dist/lifecycles/subscribers/timestamps.mjs.map +1 -0
- package/dist/metadata/index.js +24 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/index.mjs +16 -0
- package/dist/metadata/index.mjs.map +1 -0
- package/dist/metadata/metadata.js +100 -0
- package/dist/metadata/metadata.js.map +1 -0
- package/dist/metadata/metadata.mjs +98 -0
- package/dist/metadata/metadata.mjs.map +1 -0
- package/dist/metadata/relations.js +545 -0
- package/dist/metadata/relations.js.map +1 -0
- package/dist/metadata/relations.mjs +536 -0
- package/dist/metadata/relations.mjs.map +1 -0
- package/dist/migrations/common.js +8 -0
- package/dist/migrations/common.js.map +1 -0
- package/dist/migrations/common.mjs +6 -0
- package/dist/migrations/common.mjs.map +1 -0
- package/dist/migrations/index.js +39 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/index.mjs +37 -0
- package/dist/migrations/index.mjs.map +1 -0
- package/dist/migrations/internal-migrations/5.0.0-01-convert-identifiers-long-than-max-length.js +179 -0
- package/dist/migrations/internal-migrations/5.0.0-01-convert-identifiers-long-than-max-length.js.map +1 -0
- package/dist/migrations/internal-migrations/5.0.0-01-convert-identifiers-long-than-max-length.mjs +177 -0
- package/dist/migrations/internal-migrations/5.0.0-01-convert-identifiers-long-than-max-length.mjs.map +1 -0
- package/dist/migrations/internal-migrations/5.0.0-02-document-id.js +125 -0
- package/dist/migrations/internal-migrations/5.0.0-02-document-id.js.map +1 -0
- package/dist/migrations/internal-migrations/5.0.0-02-document-id.mjs +123 -0
- package/dist/migrations/internal-migrations/5.0.0-02-document-id.mjs.map +1 -0
- package/dist/migrations/internal-migrations/5.0.0-03-locale.js +41 -0
- package/dist/migrations/internal-migrations/5.0.0-03-locale.js.map +1 -0
- package/dist/migrations/internal-migrations/5.0.0-03-locale.mjs +39 -0
- package/dist/migrations/internal-migrations/5.0.0-03-locale.mjs.map +1 -0
- package/dist/migrations/internal-migrations/5.0.0-04-published-at.js +45 -0
- package/dist/migrations/internal-migrations/5.0.0-04-published-at.js.map +1 -0
- package/dist/migrations/internal-migrations/5.0.0-04-published-at.mjs +43 -0
- package/dist/migrations/internal-migrations/5.0.0-04-published-at.mjs.map +1 -0
- package/dist/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.js +43 -0
- package/dist/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.js.map +1 -0
- package/dist/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.mjs +41 -0
- package/dist/migrations/internal-migrations/5.0.0-05-drop-slug-unique-index.mjs.map +1 -0
- package/dist/migrations/internal-migrations/index.js +26 -0
- package/dist/migrations/internal-migrations/index.js.map +1 -0
- package/dist/migrations/internal-migrations/index.mjs +24 -0
- package/dist/migrations/internal-migrations/index.mjs.map +1 -0
- package/dist/migrations/internal.js +63 -0
- package/dist/migrations/internal.js.map +1 -0
- package/dist/migrations/internal.mjs +61 -0
- package/dist/migrations/internal.mjs.map +1 -0
- package/dist/migrations/logger.js +24 -0
- package/dist/migrations/logger.js.map +1 -0
- package/dist/migrations/logger.mjs +22 -0
- package/dist/migrations/logger.mjs.map +1 -0
- package/dist/migrations/storage.js +39 -0
- package/dist/migrations/storage.js.map +1 -0
- package/dist/migrations/storage.mjs +37 -0
- package/dist/migrations/storage.mjs.map +1 -0
- package/dist/migrations/users.js +87 -0
- package/dist/migrations/users.js.map +1 -0
- package/dist/migrations/users.mjs +85 -0
- package/dist/migrations/users.mjs.map +1 -0
- package/dist/query/helpers/join.js +127 -0
- package/dist/query/helpers/join.js.map +1 -0
- package/dist/query/helpers/join.mjs +122 -0
- package/dist/query/helpers/join.mjs.map +1 -0
- package/dist/query/helpers/order-by.js +167 -0
- package/dist/query/helpers/order-by.js.map +1 -0
- package/dist/query/helpers/order-by.mjs +163 -0
- package/dist/query/helpers/order-by.mjs.map +1 -0
- package/dist/query/helpers/populate/apply.js +592 -0
- package/dist/query/helpers/populate/apply.js.map +1 -0
- package/dist/query/helpers/populate/apply.mjs +590 -0
- package/dist/query/helpers/populate/apply.mjs.map +1 -0
- package/dist/query/helpers/populate/process.js +92 -0
- package/dist/query/helpers/populate/process.js.map +1 -0
- package/dist/query/helpers/populate/process.mjs +90 -0
- package/dist/query/helpers/populate/process.mjs.map +1 -0
- package/dist/query/helpers/search.js +67 -0
- package/dist/query/helpers/search.js.map +1 -0
- package/dist/query/helpers/search.mjs +65 -0
- package/dist/query/helpers/search.mjs.map +1 -0
- package/dist/query/helpers/streams/readable.js +131 -0
- package/dist/query/helpers/streams/readable.js.map +1 -0
- package/dist/query/helpers/streams/readable.mjs +129 -0
- package/dist/query/helpers/streams/readable.mjs.map +1 -0
- package/dist/query/helpers/transform.js +77 -0
- package/dist/query/helpers/transform.js.map +1 -0
- package/dist/query/helpers/transform.mjs +73 -0
- package/dist/query/helpers/transform.mjs.map +1 -0
- package/dist/query/helpers/where.js +372 -0
- package/dist/query/helpers/where.js.map +1 -0
- package/dist/query/helpers/where.mjs +369 -0
- package/dist/query/helpers/where.mjs.map +1 -0
- package/dist/query/query-builder.js +507 -0
- package/dist/query/query-builder.js.map +1 -0
- package/dist/query/query-builder.mjs +505 -0
- package/dist/query/query-builder.mjs.map +1 -0
- package/dist/repairs/index.js +13 -0
- package/dist/repairs/index.js.map +1 -0
- package/dist/repairs/index.mjs +11 -0
- package/dist/repairs/index.mjs.map +1 -0
- package/dist/repairs/operations/remove-orphan-morph-types.js +54 -0
- package/dist/repairs/operations/remove-orphan-morph-types.js.map +1 -0
- package/dist/repairs/operations/remove-orphan-morph-types.mjs +52 -0
- package/dist/repairs/operations/remove-orphan-morph-types.mjs.map +1 -0
- package/dist/schema/builder.js +354 -0
- package/dist/schema/builder.js.map +1 -0
- package/dist/schema/builder.mjs +352 -0
- package/dist/schema/builder.mjs.map +1 -0
- package/dist/schema/diff.js +379 -0
- package/dist/schema/diff.js.map +1 -0
- package/dist/schema/diff.mjs +377 -0
- package/dist/schema/diff.mjs.map +1 -0
- package/dist/schema/index.js +93 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/index.mjs +91 -0
- package/dist/schema/index.mjs.map +1 -0
- package/dist/schema/schema.js +266 -0
- package/dist/schema/schema.js.map +1 -0
- package/dist/schema/schema.mjs +264 -0
- package/dist/schema/schema.mjs.map +1 -0
- package/dist/schema/storage.js +58 -0
- package/dist/schema/storage.js.map +1 -0
- package/dist/schema/storage.mjs +56 -0
- package/dist/schema/storage.mjs.map +1 -0
- package/dist/transaction-context.js +65 -0
- package/dist/transaction-context.js.map +1 -0
- package/dist/transaction-context.mjs +63 -0
- package/dist/transaction-context.mjs.map +1 -0
- package/dist/utils/async-curry.js +19 -0
- package/dist/utils/async-curry.js.map +1 -0
- package/dist/utils/async-curry.mjs +17 -0
- package/dist/utils/async-curry.mjs.map +1 -0
- package/dist/utils/identifiers/hash.js +30 -0
- package/dist/utils/identifiers/hash.js.map +1 -0
- package/dist/utils/identifiers/hash.mjs +28 -0
- package/dist/utils/identifiers/hash.mjs.map +1 -0
- package/dist/utils/identifiers/index.js +414 -0
- package/dist/utils/identifiers/index.js.map +1 -0
- package/dist/utils/identifiers/index.mjs +411 -0
- package/dist/utils/identifiers/index.mjs.map +1 -0
- package/dist/utils/knex.js +21 -0
- package/dist/utils/knex.js.map +1 -0
- package/dist/utils/knex.mjs +18 -0
- package/dist/utils/knex.mjs.map +1 -0
- package/dist/utils/types.js +51 -0
- package/dist/utils/types.js.map +1 -0
- package/dist/utils/types.mjs +44 -0
- package/dist/utils/types.mjs.map +1 -0
- package/dist/validations/index.js +12 -0
- package/dist/validations/index.js.map +1 -0
- package/dist/validations/index.mjs +10 -0
- package/dist/validations/index.mjs.map +1 -0
- package/dist/validations/relations/bidirectional.js +64 -0
- package/dist/validations/relations/bidirectional.js.map +1 -0
- package/dist/validations/relations/bidirectional.mjs +62 -0
- package/dist/validations/relations/bidirectional.mjs.map +1 -0
- package/dist/validations/relations/index.js +13 -0
- package/dist/validations/relations/index.js.map +1 -0
- package/dist/validations/relations/index.mjs +11 -0
- package/dist/validations/relations/index.mjs.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
2
|
+
|
|
3
|
+
const TABLE_NAME = 'strapi_database_schema';
|
|
4
|
+
var createSchemaStorage = ((db)=>{
|
|
5
|
+
const hasSchemaTable = ()=>db.getSchemaConnection().hasTable(TABLE_NAME);
|
|
6
|
+
const createSchemaTable = ()=>{
|
|
7
|
+
return db.getSchemaConnection().createTable(TABLE_NAME, (t)=>{
|
|
8
|
+
t.increments('id');
|
|
9
|
+
t.json('schema');
|
|
10
|
+
t.datetime('time', {
|
|
11
|
+
useTz: false
|
|
12
|
+
});
|
|
13
|
+
t.string('hash');
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
const checkTableExists = async ()=>{
|
|
17
|
+
if (!await hasSchemaTable()) {
|
|
18
|
+
await createSchemaTable();
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
async read () {
|
|
23
|
+
await checkTableExists();
|
|
24
|
+
const res = await db.getConnection().select('*').from(TABLE_NAME).orderBy('time', 'DESC').first();
|
|
25
|
+
if (!res) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
const parsedSchema = typeof res.schema === 'object' ? res.schema : JSON.parse(res.schema);
|
|
29
|
+
return {
|
|
30
|
+
...res,
|
|
31
|
+
schema: parsedSchema
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
hashSchema (schema) {
|
|
35
|
+
return crypto.createHash('md5').update(JSON.stringify(schema)).digest('hex');
|
|
36
|
+
},
|
|
37
|
+
async add (schema) {
|
|
38
|
+
await checkTableExists();
|
|
39
|
+
// NOTE: we can remove this to add history
|
|
40
|
+
await db.getConnection(TABLE_NAME).delete();
|
|
41
|
+
const time = new Date();
|
|
42
|
+
await db.getConnection().insert({
|
|
43
|
+
schema: JSON.stringify(schema),
|
|
44
|
+
hash: this.hashSchema(schema),
|
|
45
|
+
time
|
|
46
|
+
}).into(TABLE_NAME);
|
|
47
|
+
},
|
|
48
|
+
async clear () {
|
|
49
|
+
await checkTableExists();
|
|
50
|
+
await db.getConnection(TABLE_NAME).truncate();
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
export { createSchemaStorage as default };
|
|
56
|
+
//# sourceMappingURL=storage.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.mjs","sources":["../../src/schema/storage.ts"],"sourcesContent":["import crypto from 'crypto';\n\nimport type { Database } from '..';\nimport type { Schema } from './types';\n\nconst TABLE_NAME = 'strapi_database_schema';\n\nexport default (db: Database) => {\n const hasSchemaTable = () => db.getSchemaConnection().hasTable(TABLE_NAME);\n\n const createSchemaTable = () => {\n return db.getSchemaConnection().createTable(TABLE_NAME, (t) => {\n t.increments('id');\n t.json('schema');\n t.datetime('time', { useTz: false });\n t.string('hash');\n });\n };\n\n const checkTableExists = async () => {\n if (!(await hasSchemaTable())) {\n await createSchemaTable();\n }\n };\n\n return {\n async read(): Promise<{\n id: number;\n time: Date;\n hash: string;\n schema: Schema;\n } | null> {\n await checkTableExists();\n\n const res = await db\n .getConnection()\n .select('*')\n .from(TABLE_NAME)\n .orderBy('time', 'DESC')\n .first();\n\n if (!res) {\n return null;\n }\n\n const parsedSchema = typeof res.schema === 'object' ? res.schema : JSON.parse(res.schema);\n\n return {\n ...res,\n schema: parsedSchema,\n };\n },\n\n hashSchema(schema: Schema) {\n return crypto.createHash('md5').update(JSON.stringify(schema)).digest('hex');\n },\n\n async add(schema: Schema) {\n await checkTableExists();\n\n // NOTE: we can remove this to add history\n await db.getConnection(TABLE_NAME).delete();\n\n const time = new Date();\n\n await db\n .getConnection()\n .insert({\n schema: JSON.stringify(schema),\n hash: this.hashSchema(schema),\n time,\n })\n .into(TABLE_NAME);\n },\n\n async clear() {\n await checkTableExists();\n\n await db.getConnection(TABLE_NAME).truncate();\n },\n };\n};\n"],"names":["TABLE_NAME","db","hasSchemaTable","getSchemaConnection","hasTable","createSchemaTable","createTable","t","increments","json","datetime","useTz","string","checkTableExists","read","res","getConnection","select","from","orderBy","first","parsedSchema","schema","JSON","parse","hashSchema","crypto","createHash","update","stringify","digest","add","delete","time","Date","insert","hash","into","clear","truncate"],"mappings":";;AAKA,MAAMA,UAAa,GAAA,wBAAA;AAEnB,0BAAe,CAAA,CAACC,EAAAA,GAAAA;AACd,IAAA,MAAMC,iBAAiB,IAAMD,EAAAA,CAAGE,mBAAmB,EAAA,CAAGC,QAAQ,CAACJ,UAAAA,CAAAA;AAE/D,IAAA,MAAMK,iBAAoB,GAAA,IAAA;AACxB,QAAA,OAAOJ,GAAGE,mBAAmB,EAAA,CAAGG,WAAW,CAACN,YAAY,CAACO,CAAAA,GAAAA;AACvDA,YAAAA,CAAAA,CAAEC,UAAU,CAAC,IAAA,CAAA;AACbD,YAAAA,CAAAA,CAAEE,IAAI,CAAC,QAAA,CAAA;YACPF,CAAEG,CAAAA,QAAQ,CAAC,MAAQ,EAAA;gBAAEC,KAAO,EAAA;AAAM,aAAA,CAAA;AAClCJ,YAAAA,CAAAA,CAAEK,MAAM,CAAC,MAAA,CAAA;AACX,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,MAAMC,gBAAmB,GAAA,UAAA;QACvB,IAAI,CAAE,MAAMX,cAAmB,EAAA,EAAA;YAC7B,MAAMG,iBAAAA,EAAAA;AACR;AACF,KAAA;IAEA,OAAO;QACL,MAAMS,IAAAA,CAAAA,GAAAA;YAMJ,MAAMD,gBAAAA,EAAAA;AAEN,YAAA,MAAME,GAAM,GAAA,MAAMd,EACfe,CAAAA,aAAa,GACbC,MAAM,CAAC,GACPC,CAAAA,CAAAA,IAAI,CAAClB,UACLmB,CAAAA,CAAAA,OAAO,CAAC,MAAA,EAAQ,QAChBC,KAAK,EAAA;AAER,YAAA,IAAI,CAACL,GAAK,EAAA;gBACR,OAAO,IAAA;AACT;AAEA,YAAA,MAAMM,YAAe,GAAA,OAAON,GAAIO,CAAAA,MAAM,KAAK,QAAA,GAAWP,GAAIO,CAAAA,MAAM,GAAGC,IAAAA,CAAKC,KAAK,CAACT,IAAIO,MAAM,CAAA;YAExF,OAAO;AACL,gBAAA,GAAGP,GAAG;gBACNO,MAAQD,EAAAA;AACV,aAAA;AACF,SAAA;AAEAI,QAAAA,UAAAA,CAAAA,CAAWH,MAAc,EAAA;YACvB,OAAOI,MAAAA,CAAOC,UAAU,CAAC,KAAOC,CAAAA,CAAAA,MAAM,CAACL,IAAAA,CAAKM,SAAS,CAACP,MAASQ,CAAAA,CAAAA,CAAAA,MAAM,CAAC,KAAA,CAAA;AACxE,SAAA;AAEA,QAAA,MAAMC,KAAIT,MAAc,EAAA;YACtB,MAAMT,gBAAAA,EAAAA;;AAGN,YAAA,MAAMZ,EAAGe,CAAAA,aAAa,CAAChB,UAAAA,CAAAA,CAAYgC,MAAM,EAAA;AAEzC,YAAA,MAAMC,OAAO,IAAIC,IAAAA,EAAAA;AAEjB,YAAA,MAAMjC,EACHe,CAAAA,aAAa,EACbmB,CAAAA,MAAM,CAAC;gBACNb,MAAQC,EAAAA,IAAAA,CAAKM,SAAS,CAACP,MAAAA,CAAAA;gBACvBc,IAAM,EAAA,IAAI,CAACX,UAAU,CAACH,MAAAA,CAAAA;AACtBW,gBAAAA;AACF,aAAA,CAAA,CACCI,IAAI,CAACrC,UAAAA,CAAAA;AACV,SAAA;QAEA,MAAMsC,KAAAA,CAAAA,GAAAA;YACJ,MAAMzB,gBAAAA,EAAAA;AAEN,YAAA,MAAMZ,EAAGe,CAAAA,aAAa,CAAChB,UAAAA,CAAAA,CAAYuC,QAAQ,EAAA;AAC7C;AACF,KAAA;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var node_async_hooks = require('node:async_hooks');
|
|
4
|
+
|
|
5
|
+
const storage = new node_async_hooks.AsyncLocalStorage();
|
|
6
|
+
const transactionCtx = {
|
|
7
|
+
async run (trx, cb) {
|
|
8
|
+
const store = storage.getStore();
|
|
9
|
+
return storage.run({
|
|
10
|
+
trx,
|
|
11
|
+
// Fill with existing callbacks if nesting transactions
|
|
12
|
+
commitCallbacks: store?.commitCallbacks || [],
|
|
13
|
+
rollbackCallbacks: store?.rollbackCallbacks || []
|
|
14
|
+
}, cb);
|
|
15
|
+
},
|
|
16
|
+
get () {
|
|
17
|
+
const store = storage.getStore();
|
|
18
|
+
return store?.trx;
|
|
19
|
+
},
|
|
20
|
+
async commit (trx) {
|
|
21
|
+
const store = storage.getStore();
|
|
22
|
+
// Clear transaction from store
|
|
23
|
+
if (store?.trx) {
|
|
24
|
+
store.trx = null;
|
|
25
|
+
}
|
|
26
|
+
// Commit transaction
|
|
27
|
+
await trx.commit();
|
|
28
|
+
if (!store?.commitCallbacks.length) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Run callbacks
|
|
32
|
+
store.commitCallbacks.forEach((cb)=>cb());
|
|
33
|
+
store.commitCallbacks = [];
|
|
34
|
+
},
|
|
35
|
+
async rollback (trx) {
|
|
36
|
+
const store = storage.getStore();
|
|
37
|
+
// Clear transaction from store
|
|
38
|
+
if (store?.trx) {
|
|
39
|
+
store.trx = null;
|
|
40
|
+
}
|
|
41
|
+
// Rollback transaction
|
|
42
|
+
await trx.rollback();
|
|
43
|
+
if (!store?.rollbackCallbacks.length) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Run callbacks
|
|
47
|
+
store.rollbackCallbacks.forEach((cb)=>cb());
|
|
48
|
+
store.rollbackCallbacks = [];
|
|
49
|
+
},
|
|
50
|
+
onCommit (cb) {
|
|
51
|
+
const store = storage.getStore();
|
|
52
|
+
if (store?.commitCallbacks) {
|
|
53
|
+
store.commitCallbacks.push(cb);
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
onRollback (cb) {
|
|
57
|
+
const store = storage.getStore();
|
|
58
|
+
if (store?.rollbackCallbacks) {
|
|
59
|
+
store.rollbackCallbacks.push(cb);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
exports.transactionCtx = transactionCtx;
|
|
65
|
+
//# sourceMappingURL=transaction-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-context.js","sources":["../src/transaction-context.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks';\nimport { Knex } from 'knex';\n\nexport type Callback = (...args: any[]) => Promise<any> | any;\n\nexport interface TransactionObject {\n commit: () => Promise<void>;\n rollback: () => Promise<void>;\n get: () => Knex.Transaction;\n}\nexport interface Store {\n trx: Knex.Transaction | null;\n commitCallbacks: Callback[];\n rollbackCallbacks: Callback[];\n}\n\nconst storage = new AsyncLocalStorage<Store>();\n\nconst transactionCtx = {\n async run<TCallback extends Callback>(trx: Knex.Transaction, cb: TCallback) {\n const store = storage.getStore();\n return storage.run<ReturnType<TCallback>, void[]>(\n {\n trx,\n // Fill with existing callbacks if nesting transactions\n commitCallbacks: store?.commitCallbacks || [],\n rollbackCallbacks: store?.rollbackCallbacks || [],\n },\n cb\n );\n },\n\n get() {\n const store = storage.getStore();\n return store?.trx;\n },\n\n async commit(trx: Knex.Transaction) {\n const store = storage.getStore();\n\n // Clear transaction from store\n if (store?.trx) {\n store.trx = null;\n }\n\n // Commit transaction\n await trx.commit();\n\n if (!store?.commitCallbacks.length) {\n return;\n }\n\n // Run callbacks\n store.commitCallbacks.forEach((cb) => cb());\n store.commitCallbacks = [];\n },\n\n async rollback(trx: Knex.Transaction) {\n const store = storage.getStore();\n\n // Clear transaction from store\n if (store?.trx) {\n store.trx = null;\n }\n\n // Rollback transaction\n await trx.rollback();\n\n if (!store?.rollbackCallbacks.length) {\n return;\n }\n\n // Run callbacks\n store.rollbackCallbacks.forEach((cb) => cb());\n store.rollbackCallbacks = [];\n },\n\n onCommit(cb: Callback) {\n const store = storage.getStore();\n if (store?.commitCallbacks) {\n store.commitCallbacks.push(cb);\n }\n },\n\n onRollback(cb: Callback) {\n const store = storage.getStore();\n if (store?.rollbackCallbacks) {\n store.rollbackCallbacks.push(cb);\n }\n },\n};\n\nexport { transactionCtx };\n"],"names":["storage","AsyncLocalStorage","transactionCtx","run","trx","cb","store","getStore","commitCallbacks","rollbackCallbacks","get","commit","length","forEach","rollback","onCommit","push","onRollback"],"mappings":";;;;AAgBA,MAAMA,UAAU,IAAIC,kCAAAA,EAAAA;AAEpB,MAAMC,cAAiB,GAAA;IACrB,MAAMC,GAAAA,CAAAA,CAAgCC,GAAqB,EAAEC,EAAa,EAAA;QACxE,MAAMC,KAAAA,GAAQN,QAAQO,QAAQ,EAAA;QAC9B,OAAOP,OAAAA,CAAQG,GAAG,CAChB;AACEC,YAAAA,GAAAA;;YAEAI,eAAiBF,EAAAA,KAAAA,EAAOE,mBAAmB,EAAE;YAC7CC,iBAAmBH,EAAAA,KAAAA,EAAOG,qBAAqB;SAEjDJ,EAAAA,EAAAA,CAAAA;AAEJ,KAAA;AAEAK,IAAAA,GAAAA,CAAAA,GAAAA;QACE,MAAMJ,KAAAA,GAAQN,QAAQO,QAAQ,EAAA;AAC9B,QAAA,OAAOD,KAAOF,EAAAA,GAAAA;AAChB,KAAA;AAEA,IAAA,MAAMO,QAAOP,GAAqB,EAAA;QAChC,MAAME,KAAAA,GAAQN,QAAQO,QAAQ,EAAA;;AAG9B,QAAA,IAAID,OAAOF,GAAK,EAAA;AACdE,YAAAA,KAAAA,CAAMF,GAAG,GAAG,IAAA;AACd;;AAGA,QAAA,MAAMA,IAAIO,MAAM,EAAA;QAEhB,IAAI,CAACL,KAAOE,EAAAA,eAAAA,CAAgBI,MAAQ,EAAA;AAClC,YAAA;AACF;;AAGAN,QAAAA,KAAAA,CAAME,eAAe,CAACK,OAAO,CAAC,CAACR,EAAOA,GAAAA,EAAAA,EAAAA,CAAAA;QACtCC,KAAME,CAAAA,eAAe,GAAG,EAAE;AAC5B,KAAA;AAEA,IAAA,MAAMM,UAASV,GAAqB,EAAA;QAClC,MAAME,KAAAA,GAAQN,QAAQO,QAAQ,EAAA;;AAG9B,QAAA,IAAID,OAAOF,GAAK,EAAA;AACdE,YAAAA,KAAAA,CAAMF,GAAG,GAAG,IAAA;AACd;;AAGA,QAAA,MAAMA,IAAIU,QAAQ,EAAA;QAElB,IAAI,CAACR,KAAOG,EAAAA,iBAAAA,CAAkBG,MAAQ,EAAA;AACpC,YAAA;AACF;;AAGAN,QAAAA,KAAAA,CAAMG,iBAAiB,CAACI,OAAO,CAAC,CAACR,EAAOA,GAAAA,EAAAA,EAAAA,CAAAA;QACxCC,KAAMG,CAAAA,iBAAiB,GAAG,EAAE;AAC9B,KAAA;AAEAM,IAAAA,QAAAA,CAAAA,CAASV,EAAY,EAAA;QACnB,MAAMC,KAAAA,GAAQN,QAAQO,QAAQ,EAAA;AAC9B,QAAA,IAAID,OAAOE,eAAiB,EAAA;YAC1BF,KAAME,CAAAA,eAAe,CAACQ,IAAI,CAACX,EAAAA,CAAAA;AAC7B;AACF,KAAA;AAEAY,IAAAA,UAAAA,CAAAA,CAAWZ,EAAY,EAAA;QACrB,MAAMC,KAAAA,GAAQN,QAAQO,QAAQ,EAAA;AAC9B,QAAA,IAAID,OAAOG,iBAAmB,EAAA;YAC5BH,KAAMG,CAAAA,iBAAiB,CAACO,IAAI,CAACX,EAAAA,CAAAA;AAC/B;AACF;AACF;;;;"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
|
|
3
|
+
const storage = new AsyncLocalStorage();
|
|
4
|
+
const transactionCtx = {
|
|
5
|
+
async run (trx, cb) {
|
|
6
|
+
const store = storage.getStore();
|
|
7
|
+
return storage.run({
|
|
8
|
+
trx,
|
|
9
|
+
// Fill with existing callbacks if nesting transactions
|
|
10
|
+
commitCallbacks: store?.commitCallbacks || [],
|
|
11
|
+
rollbackCallbacks: store?.rollbackCallbacks || []
|
|
12
|
+
}, cb);
|
|
13
|
+
},
|
|
14
|
+
get () {
|
|
15
|
+
const store = storage.getStore();
|
|
16
|
+
return store?.trx;
|
|
17
|
+
},
|
|
18
|
+
async commit (trx) {
|
|
19
|
+
const store = storage.getStore();
|
|
20
|
+
// Clear transaction from store
|
|
21
|
+
if (store?.trx) {
|
|
22
|
+
store.trx = null;
|
|
23
|
+
}
|
|
24
|
+
// Commit transaction
|
|
25
|
+
await trx.commit();
|
|
26
|
+
if (!store?.commitCallbacks.length) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
// Run callbacks
|
|
30
|
+
store.commitCallbacks.forEach((cb)=>cb());
|
|
31
|
+
store.commitCallbacks = [];
|
|
32
|
+
},
|
|
33
|
+
async rollback (trx) {
|
|
34
|
+
const store = storage.getStore();
|
|
35
|
+
// Clear transaction from store
|
|
36
|
+
if (store?.trx) {
|
|
37
|
+
store.trx = null;
|
|
38
|
+
}
|
|
39
|
+
// Rollback transaction
|
|
40
|
+
await trx.rollback();
|
|
41
|
+
if (!store?.rollbackCallbacks.length) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// Run callbacks
|
|
45
|
+
store.rollbackCallbacks.forEach((cb)=>cb());
|
|
46
|
+
store.rollbackCallbacks = [];
|
|
47
|
+
},
|
|
48
|
+
onCommit (cb) {
|
|
49
|
+
const store = storage.getStore();
|
|
50
|
+
if (store?.commitCallbacks) {
|
|
51
|
+
store.commitCallbacks.push(cb);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
onRollback (cb) {
|
|
55
|
+
const store = storage.getStore();
|
|
56
|
+
if (store?.rollbackCallbacks) {
|
|
57
|
+
store.rollbackCallbacks.push(cb);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export { transactionCtx };
|
|
63
|
+
//# sourceMappingURL=transaction-context.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-context.mjs","sources":["../src/transaction-context.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks';\nimport { Knex } from 'knex';\n\nexport type Callback = (...args: any[]) => Promise<any> | any;\n\nexport interface TransactionObject {\n commit: () => Promise<void>;\n rollback: () => Promise<void>;\n get: () => Knex.Transaction;\n}\nexport interface Store {\n trx: Knex.Transaction | null;\n commitCallbacks: Callback[];\n rollbackCallbacks: Callback[];\n}\n\nconst storage = new AsyncLocalStorage<Store>();\n\nconst transactionCtx = {\n async run<TCallback extends Callback>(trx: Knex.Transaction, cb: TCallback) {\n const store = storage.getStore();\n return storage.run<ReturnType<TCallback>, void[]>(\n {\n trx,\n // Fill with existing callbacks if nesting transactions\n commitCallbacks: store?.commitCallbacks || [],\n rollbackCallbacks: store?.rollbackCallbacks || [],\n },\n cb\n );\n },\n\n get() {\n const store = storage.getStore();\n return store?.trx;\n },\n\n async commit(trx: Knex.Transaction) {\n const store = storage.getStore();\n\n // Clear transaction from store\n if (store?.trx) {\n store.trx = null;\n }\n\n // Commit transaction\n await trx.commit();\n\n if (!store?.commitCallbacks.length) {\n return;\n }\n\n // Run callbacks\n store.commitCallbacks.forEach((cb) => cb());\n store.commitCallbacks = [];\n },\n\n async rollback(trx: Knex.Transaction) {\n const store = storage.getStore();\n\n // Clear transaction from store\n if (store?.trx) {\n store.trx = null;\n }\n\n // Rollback transaction\n await trx.rollback();\n\n if (!store?.rollbackCallbacks.length) {\n return;\n }\n\n // Run callbacks\n store.rollbackCallbacks.forEach((cb) => cb());\n store.rollbackCallbacks = [];\n },\n\n onCommit(cb: Callback) {\n const store = storage.getStore();\n if (store?.commitCallbacks) {\n store.commitCallbacks.push(cb);\n }\n },\n\n onRollback(cb: Callback) {\n const store = storage.getStore();\n if (store?.rollbackCallbacks) {\n store.rollbackCallbacks.push(cb);\n }\n },\n};\n\nexport { transactionCtx };\n"],"names":["storage","AsyncLocalStorage","transactionCtx","run","trx","cb","store","getStore","commitCallbacks","rollbackCallbacks","get","commit","length","forEach","rollback","onCommit","push","onRollback"],"mappings":";;AAgBA,MAAMA,UAAU,IAAIC,iBAAAA,EAAAA;AAEpB,MAAMC,cAAiB,GAAA;IACrB,MAAMC,GAAAA,CAAAA,CAAgCC,GAAqB,EAAEC,EAAa,EAAA;QACxE,MAAMC,KAAAA,GAAQN,QAAQO,QAAQ,EAAA;QAC9B,OAAOP,OAAAA,CAAQG,GAAG,CAChB;AACEC,YAAAA,GAAAA;;YAEAI,eAAiBF,EAAAA,KAAAA,EAAOE,mBAAmB,EAAE;YAC7CC,iBAAmBH,EAAAA,KAAAA,EAAOG,qBAAqB;SAEjDJ,EAAAA,EAAAA,CAAAA;AAEJ,KAAA;AAEAK,IAAAA,GAAAA,CAAAA,GAAAA;QACE,MAAMJ,KAAAA,GAAQN,QAAQO,QAAQ,EAAA;AAC9B,QAAA,OAAOD,KAAOF,EAAAA,GAAAA;AAChB,KAAA;AAEA,IAAA,MAAMO,QAAOP,GAAqB,EAAA;QAChC,MAAME,KAAAA,GAAQN,QAAQO,QAAQ,EAAA;;AAG9B,QAAA,IAAID,OAAOF,GAAK,EAAA;AACdE,YAAAA,KAAAA,CAAMF,GAAG,GAAG,IAAA;AACd;;AAGA,QAAA,MAAMA,IAAIO,MAAM,EAAA;QAEhB,IAAI,CAACL,KAAOE,EAAAA,eAAAA,CAAgBI,MAAQ,EAAA;AAClC,YAAA;AACF;;AAGAN,QAAAA,KAAAA,CAAME,eAAe,CAACK,OAAO,CAAC,CAACR,EAAOA,GAAAA,EAAAA,EAAAA,CAAAA;QACtCC,KAAME,CAAAA,eAAe,GAAG,EAAE;AAC5B,KAAA;AAEA,IAAA,MAAMM,UAASV,GAAqB,EAAA;QAClC,MAAME,KAAAA,GAAQN,QAAQO,QAAQ,EAAA;;AAG9B,QAAA,IAAID,OAAOF,GAAK,EAAA;AACdE,YAAAA,KAAAA,CAAMF,GAAG,GAAG,IAAA;AACd;;AAGA,QAAA,MAAMA,IAAIU,QAAQ,EAAA;QAElB,IAAI,CAACR,KAAOG,EAAAA,iBAAAA,CAAkBG,MAAQ,EAAA;AACpC,YAAA;AACF;;AAGAN,QAAAA,KAAAA,CAAMG,iBAAiB,CAACI,OAAO,CAAC,CAACR,EAAOA,GAAAA,EAAAA,EAAAA,CAAAA;QACxCC,KAAMG,CAAAA,iBAAiB,GAAG,EAAE;AAC9B,KAAA;AAEAM,IAAAA,QAAAA,CAAAA,CAASV,EAAY,EAAA;QACnB,MAAMC,KAAAA,GAAQN,QAAQO,QAAQ,EAAA;AAC9B,QAAA,IAAID,OAAOE,eAAiB,EAAA;YAC1BF,KAAME,CAAAA,eAAe,CAACQ,IAAI,CAACX,EAAAA,CAAAA;AAC7B;AACF,KAAA;AAEAY,IAAAA,UAAAA,CAAAA,CAAWZ,EAAY,EAAA;QACrB,MAAMC,KAAAA,GAAQN,QAAQO,QAAQ,EAAA;AAC9B,QAAA,IAAID,OAAOG,iBAAmB,EAAA;YAC5BH,KAAMG,CAAAA,iBAAiB,CAACO,IAAI,CAACX,EAAAA,CAAAA;AAC/B;AACF;AACF;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// lodash/fp curry does not handle async functions properly, and creates very "ugly" types,
|
|
4
|
+
// so we will use our own version to ensure curried functions are typed correctly
|
|
5
|
+
// TODO: Export this from root @strapi/utils so we don't have copies of it between packages
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/ const asyncCurry = (fn)=>{
|
|
9
|
+
const curried = (...args)=>{
|
|
10
|
+
if (args.length >= fn.length) {
|
|
11
|
+
return fn(...args);
|
|
12
|
+
}
|
|
13
|
+
return (...moreArgs)=>curried(...args, ...moreArgs);
|
|
14
|
+
};
|
|
15
|
+
return curried;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.asyncCurry = asyncCurry;
|
|
19
|
+
//# sourceMappingURL=async-curry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-curry.js","sources":["../../src/utils/async-curry.ts"],"sourcesContent":["// lodash/fp curry does not handle async functions properly, and creates very \"ugly\" types,\n// so we will use our own version to ensure curried functions are typed correctly\n// TODO: Export this from root @strapi/utils so we don't have copies of it between packages\n\n/**\n * @internal\n */\nexport const asyncCurry = <Args extends any[], R>(\n fn: (...args: Args) => Promise<R>\n): CurriedAsyncFunction<Args, R> => {\n const curried = (...args: any[]): any => {\n if (args.length >= fn.length) {\n return fn(...(args as Args));\n }\n return (...moreArgs: any[]) => curried(...args, ...moreArgs);\n };\n\n return curried as CurriedAsyncFunction<Args, R>;\n};\n\n/**\n * @internal\n */\nexport type CurriedAsyncFunction<Args extends any[], R> = Args extends [infer First, ...infer Rest]\n ? Rest extends []\n ? (arg: First) => Promise<R>\n : (arg: First) => CurriedAsyncFunction<Rest, R>\n : () => Promise<R>;\n"],"names":["asyncCurry","fn","curried","args","length","moreArgs"],"mappings":";;AAAA;AACA;AACA;AAEA;;IAGaA,MAAAA,UAAAA,GAAa,CACxBC,EAAAA,GAAAA;IAEA,MAAMC,OAAAA,GAAU,CAAC,GAAGC,IAAAA,GAAAA;AAClB,QAAA,IAAIA,IAAKC,CAAAA,MAAM,IAAIH,EAAAA,CAAGG,MAAM,EAAE;AAC5B,YAAA,OAAOH,EAAOE,CAAAA,GAAAA,IAAAA,CAAAA;AAChB;AACA,QAAA,OAAO,CAAC,GAAGE,QAAoBH,GAAAA,OAAAA,CAAAA,GAAWC,IAASE,EAAAA,GAAAA,QAAAA,CAAAA;AACrD,KAAA;IAEA,OAAOH,OAAAA;AACT;;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// lodash/fp curry does not handle async functions properly, and creates very "ugly" types,
|
|
2
|
+
// so we will use our own version to ensure curried functions are typed correctly
|
|
3
|
+
// TODO: Export this from root @strapi/utils so we don't have copies of it between packages
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/ const asyncCurry = (fn)=>{
|
|
7
|
+
const curried = (...args)=>{
|
|
8
|
+
if (args.length >= fn.length) {
|
|
9
|
+
return fn(...args);
|
|
10
|
+
}
|
|
11
|
+
return (...moreArgs)=>curried(...args, ...moreArgs);
|
|
12
|
+
};
|
|
13
|
+
return curried;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { asyncCurry };
|
|
17
|
+
//# sourceMappingURL=async-curry.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-curry.mjs","sources":["../../src/utils/async-curry.ts"],"sourcesContent":["// lodash/fp curry does not handle async functions properly, and creates very \"ugly\" types,\n// so we will use our own version to ensure curried functions are typed correctly\n// TODO: Export this from root @strapi/utils so we don't have copies of it between packages\n\n/**\n * @internal\n */\nexport const asyncCurry = <Args extends any[], R>(\n fn: (...args: Args) => Promise<R>\n): CurriedAsyncFunction<Args, R> => {\n const curried = (...args: any[]): any => {\n if (args.length >= fn.length) {\n return fn(...(args as Args));\n }\n return (...moreArgs: any[]) => curried(...args, ...moreArgs);\n };\n\n return curried as CurriedAsyncFunction<Args, R>;\n};\n\n/**\n * @internal\n */\nexport type CurriedAsyncFunction<Args extends any[], R> = Args extends [infer First, ...infer Rest]\n ? Rest extends []\n ? (arg: First) => Promise<R>\n : (arg: First) => CurriedAsyncFunction<Rest, R>\n : () => Promise<R>;\n"],"names":["asyncCurry","fn","curried","args","length","moreArgs"],"mappings":"AAAA;AACA;AACA;AAEA;;IAGaA,MAAAA,UAAAA,GAAa,CACxBC,EAAAA,GAAAA;IAEA,MAAMC,OAAAA,GAAU,CAAC,GAAGC,IAAAA,GAAAA;AAClB,QAAA,IAAIA,IAAKC,CAAAA,MAAM,IAAIH,EAAAA,CAAGG,MAAM,EAAE;AAC5B,YAAA,OAAOH,EAAOE,CAAAA,GAAAA,IAAAA,CAAAA;AAChB;AACA,QAAA,OAAO,CAAC,GAAGE,QAAoBH,GAAAA,OAAAA,CAAAA,GAAWC,IAASE,EAAAA,GAAAA,QAAAA,CAAAA;AACrD,KAAA;IAEA,OAAOH,OAAAA;AACT;;;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var crypto = require('node:crypto');
|
|
4
|
+
var _ = require('lodash/fp');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Creates a hash of the given data with the specified string length as a string of hex characters
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* createHash("myData", 5); // "03f85"
|
|
11
|
+
* createHash("myData", 2); // "03"
|
|
12
|
+
* createHash("myData", 1); // "0"
|
|
13
|
+
*
|
|
14
|
+
* @param data - The data to be hashed
|
|
15
|
+
* @param len - The length of the hash
|
|
16
|
+
* @returns The generated hash
|
|
17
|
+
* @throws Error if the length is not a positive integer
|
|
18
|
+
* @internal
|
|
19
|
+
*/ function createHash(data, len) {
|
|
20
|
+
if (!_.isInteger(len) || len <= 0) {
|
|
21
|
+
throw new Error(`createHash length must be a positive integer, received ${len}`);
|
|
22
|
+
}
|
|
23
|
+
const hash = crypto.createHash('shake256', {
|
|
24
|
+
outputLength: Math.ceil(len / 2)
|
|
25
|
+
}).update(data);
|
|
26
|
+
return hash.digest('hex').substring(0, len);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
exports.createHash = createHash;
|
|
30
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sources":["../../../src/utils/identifiers/hash.ts"],"sourcesContent":["/**\n * @fileoverview This file contains utility functions for shortening identifiers for use in a database schema.\n * The functions in this file are used to generate shorter names for database tables and columns\n * to avoid breaking the constraints of databases.\n *\n * IMPORTANT\n * Any changes here that result in a different output string from any of the naming methods will\n * cause the schema creation to delete data it doesn't recognize because the name\n * is different.\n *\n * If there are any test failures after updating this code, it means there is a breaking change that\n * will cause data loss, so beware; do not update the test to match your changes\n *\n * @internal\n */\n\nimport crypto from 'node:crypto';\nimport { isInteger } from 'lodash/fp';\n\n/**\n * Creates a hash of the given data with the specified string length as a string of hex characters\n *\n * @example\n * createHash(\"myData\", 5); // \"03f85\"\n * createHash(\"myData\", 2); // \"03\"\n * createHash(\"myData\", 1); // \"0\"\n *\n * @param data - The data to be hashed\n * @param len - The length of the hash\n * @returns The generated hash\n * @throws Error if the length is not a positive integer\n * @internal\n */\nexport function createHash(data: string, len: number): string {\n if (!isInteger(len) || len <= 0) {\n throw new Error(`createHash length must be a positive integer, received ${len}`);\n }\n\n const hash = crypto.createHash('shake256', { outputLength: Math.ceil(len / 2) }).update(data);\n return hash.digest('hex').substring(0, len);\n}\n"],"names":["createHash","data","len","isInteger","Error","hash","crypto","outputLength","Math","ceil","update","digest","substring"],"mappings":";;;;;AAmBA;;;;;;;;;;;;;AAaC,IACM,SAASA,UAAWC,CAAAA,IAAY,EAAEC,GAAW,EAAA;AAClD,IAAA,IAAI,CAACC,WAAAA,CAAUD,GAAQA,CAAAA,IAAAA,GAAAA,IAAO,CAAG,EAAA;AAC/B,QAAA,MAAM,IAAIE,KAAM,CAAA,CAAC,uDAAuD,EAAEF,IAAI,CAAC,CAAA;AACjF;AAEA,IAAA,MAAMG,IAAOC,GAAAA,MAAAA,CAAON,UAAU,CAAC,UAAY,EAAA;QAAEO,YAAcC,EAAAA,IAAAA,CAAKC,IAAI,CAACP,GAAM,GAAA,CAAA;AAAG,KAAA,CAAA,CAAGQ,MAAM,CAACT,IAAAA,CAAAA;AACxF,IAAA,OAAOI,KAAKM,MAAM,CAAC,KAAOC,CAAAA,CAAAA,SAAS,CAAC,CAAGV,EAAAA,GAAAA,CAAAA;AACzC;;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import { isInteger } from 'lodash/fp';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Creates a hash of the given data with the specified string length as a string of hex characters
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* createHash("myData", 5); // "03f85"
|
|
9
|
+
* createHash("myData", 2); // "03"
|
|
10
|
+
* createHash("myData", 1); // "0"
|
|
11
|
+
*
|
|
12
|
+
* @param data - The data to be hashed
|
|
13
|
+
* @param len - The length of the hash
|
|
14
|
+
* @returns The generated hash
|
|
15
|
+
* @throws Error if the length is not a positive integer
|
|
16
|
+
* @internal
|
|
17
|
+
*/ function createHash(data, len) {
|
|
18
|
+
if (!isInteger(len) || len <= 0) {
|
|
19
|
+
throw new Error(`createHash length must be a positive integer, received ${len}`);
|
|
20
|
+
}
|
|
21
|
+
const hash = crypto.createHash('shake256', {
|
|
22
|
+
outputLength: Math.ceil(len / 2)
|
|
23
|
+
}).update(data);
|
|
24
|
+
return hash.digest('hex').substring(0, len);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { createHash };
|
|
28
|
+
//# sourceMappingURL=hash.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.mjs","sources":["../../../src/utils/identifiers/hash.ts"],"sourcesContent":["/**\n * @fileoverview This file contains utility functions for shortening identifiers for use in a database schema.\n * The functions in this file are used to generate shorter names for database tables and columns\n * to avoid breaking the constraints of databases.\n *\n * IMPORTANT\n * Any changes here that result in a different output string from any of the naming methods will\n * cause the schema creation to delete data it doesn't recognize because the name\n * is different.\n *\n * If there are any test failures after updating this code, it means there is a breaking change that\n * will cause data loss, so beware; do not update the test to match your changes\n *\n * @internal\n */\n\nimport crypto from 'node:crypto';\nimport { isInteger } from 'lodash/fp';\n\n/**\n * Creates a hash of the given data with the specified string length as a string of hex characters\n *\n * @example\n * createHash(\"myData\", 5); // \"03f85\"\n * createHash(\"myData\", 2); // \"03\"\n * createHash(\"myData\", 1); // \"0\"\n *\n * @param data - The data to be hashed\n * @param len - The length of the hash\n * @returns The generated hash\n * @throws Error if the length is not a positive integer\n * @internal\n */\nexport function createHash(data: string, len: number): string {\n if (!isInteger(len) || len <= 0) {\n throw new Error(`createHash length must be a positive integer, received ${len}`);\n }\n\n const hash = crypto.createHash('shake256', { outputLength: Math.ceil(len / 2) }).update(data);\n return hash.digest('hex').substring(0, len);\n}\n"],"names":["createHash","data","len","isInteger","Error","hash","crypto","outputLength","Math","ceil","update","digest","substring"],"mappings":";;;AAmBA;;;;;;;;;;;;;AAaC,IACM,SAASA,UAAWC,CAAAA,IAAY,EAAEC,GAAW,EAAA;AAClD,IAAA,IAAI,CAACC,SAAAA,CAAUD,GAAQA,CAAAA,IAAAA,GAAAA,IAAO,CAAG,EAAA;AAC/B,QAAA,MAAM,IAAIE,KAAM,CAAA,CAAC,uDAAuD,EAAEF,IAAI,CAAC,CAAA;AACjF;AAEA,IAAA,MAAMG,IAAOC,GAAAA,MAAAA,CAAON,UAAU,CAAC,UAAY,EAAA;QAAEO,YAAcC,EAAAA,IAAAA,CAAKC,IAAI,CAACP,GAAM,GAAA,CAAA;AAAG,KAAA,CAAA,CAAGQ,MAAM,CAACT,IAAAA,CAAAA;AACxF,IAAA,OAAOI,KAAKM,MAAM,CAAC,KAAOC,CAAAA,CAAAA,SAAS,CAAC,CAAGV,EAAAA,GAAAA,CAAAA;AACzC;;;;"}
|