arkos 1.2.13-test.1 → 1.2.13-test.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/cjs/app.js +1 -138
- package/dist/cjs/exports/auth/index.js +1 -6
- package/dist/cjs/exports/controllers/index.js +1 -11
- package/dist/cjs/exports/error-handler/index.js +1 -11
- package/dist/cjs/exports/index.js +1 -12
- package/dist/cjs/exports/middlewares/index.js +1 -7
- package/dist/cjs/exports/prisma/index.js +1 -6
- package/dist/cjs/exports/services/index.js +1 -49
- package/dist/cjs/exports/utils/index.js +1 -44
- package/dist/cjs/exports/validation/index.js +1 -11
- package/dist/cjs/modules/auth/auth.controller.js +1 -194
- package/dist/cjs/modules/auth/auth.router.js +1 -50
- package/dist/cjs/modules/auth/auth.service.js +1 -185
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +1 -83
- package/dist/cjs/modules/base/base.controller.js +1 -158
- package/dist/cjs/modules/base/base.middlewares.js +1 -92
- package/dist/cjs/modules/base/base.router.js +1 -24
- package/dist/cjs/modules/base/base.service.js +1 -128
- package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +1 -82
- package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +1 -50
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +1 -97
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +1 -171
- package/dist/cjs/modules/email/email.service.js +1 -104
- package/dist/cjs/modules/error-handler/error-handler.controller.js +4 -146
- package/dist/cjs/modules/error-handler/utils/app-error.js +1 -17
- package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -12
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +3 -201
- package/dist/cjs/modules/file-upload/file-upload.controller.js +1 -271
- package/dist/cjs/modules/file-upload/file-upload.router.js +1 -44
- package/dist/cjs/modules/file-upload/file-upload.service.js +1 -322
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -97
- package/dist/cjs/modules/swagger/swagger.router.js +1 -119
- package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -270
- package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -66
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -41
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -29
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +1 -30
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +1 -471
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +1 -575
- package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -253
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -105
- package/dist/cjs/paths.js +1 -9
- package/dist/cjs/server.js +5 -85
- package/dist/cjs/types/arkos-config.js +1 -3
- package/dist/cjs/types/auth.js +1 -3
- package/dist/cjs/types/index.js +1 -11
- package/dist/cjs/types/router-config.js +1 -3
- package/dist/cjs/utils/arkos-env.js +1 -9
- package/dist/cjs/utils/cli/build.js +6 -212
- package/dist/cjs/utils/cli/dev.js +5 -256
- package/dist/cjs/utils/cli/generate.js +12 -189
- package/dist/cjs/utils/cli/index.js +1 -81
- package/dist/cjs/utils/cli/start.js +5 -94
- package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -24
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -20
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +6 -15
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +38 -67
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +8 -36
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +11 -36
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +7 -27
- package/dist/cjs/utils/cli/utils/template-generators.js +2 -28
- package/dist/cjs/utils/dotenv.helpers.js +1 -43
- package/dist/cjs/utils/features/api.features.js +1 -167
- package/dist/cjs/utils/features/change-case.features.js +1 -67
- package/dist/cjs/utils/helpers/api.features.helpers.js +1 -106
- package/dist/cjs/utils/helpers/change-case.helpers.js +1 -177
- package/dist/cjs/utils/helpers/deepmerge.helper.js +1 -115
- package/dist/cjs/utils/helpers/fs.helpers.js +1 -61
- package/dist/cjs/utils/helpers/global.helpers.js +1 -89
- package/dist/cjs/utils/helpers/models.helpers.js +11 -339
- package/dist/cjs/utils/helpers/prisma.helpers.js +1 -52
- package/dist/cjs/utils/helpers/query-parser.helpers.js +1 -45
- package/dist/cjs/utils/helpers/routers.helpers.js +1 -21
- package/dist/cjs/utils/helpers/text.helpers.js +1 -28
- package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -451
- package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +1 -88
- package/dist/cjs/utils/prisma/prisma-schema-parser.js +3 -158
- package/dist/cjs/utils/prisma/types.js +1 -3
- package/dist/cjs/utils/sheu.js +1 -119
- package/dist/cjs/utils/validate-dto.js +1 -17
- package/dist/cjs/utils/validate-schema.js +1 -15
- package/dist/esm/app.js +1 -0
- package/dist/esm/app.js.map +1 -0
- package/dist/esm/exports/auth/index.js +1 -0
- package/dist/esm/exports/auth/index.js.map +1 -0
- package/dist/esm/exports/controllers/index.js +1 -0
- package/dist/esm/exports/controllers/index.js.map +1 -0
- package/dist/esm/exports/error-handler/index.js +1 -0
- package/dist/esm/exports/error-handler/index.js.map +1 -0
- package/dist/esm/exports/index.js +1 -0
- package/dist/esm/exports/index.js.map +1 -0
- package/dist/esm/exports/middlewares/index.js +1 -0
- package/dist/esm/exports/middlewares/index.js.map +1 -0
- package/dist/esm/exports/prisma/index.js +1 -0
- package/dist/esm/exports/prisma/index.js.map +1 -0
- package/dist/esm/exports/services/index.js +1 -0
- package/dist/esm/exports/services/index.js.map +1 -0
- package/dist/esm/exports/utils/index.js +1 -0
- package/dist/esm/exports/utils/index.js.map +1 -0
- package/dist/esm/exports/validation/index.js +1 -0
- package/dist/esm/exports/validation/index.js.map +1 -0
- package/dist/esm/modules/auth/auth.controller.js +1 -0
- package/dist/esm/modules/auth/auth.controller.js.map +1 -0
- package/dist/esm/modules/auth/auth.router.js +1 -0
- package/dist/esm/modules/auth/auth.router.js.map +1 -0
- package/dist/esm/modules/auth/auth.service.js +1 -0
- package/dist/esm/modules/auth/auth.service.js.map +1 -0
- package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -0
- package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js.map +1 -0
- package/dist/esm/modules/base/base.controller.js +1 -0
- package/dist/esm/modules/base/base.controller.js.map +1 -0
- package/dist/esm/modules/base/base.middlewares.js +1 -0
- package/dist/esm/modules/base/base.middlewares.js.map +1 -0
- package/dist/esm/modules/base/base.router.js +1 -0
- package/dist/esm/modules/base/base.router.js.map +1 -0
- package/dist/esm/modules/base/base.service.js +1 -0
- package/dist/esm/modules/base/base.service.js.map +1 -0
- package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +1 -0
- package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js.map +1 -0
- package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +1 -0
- package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js.map +1 -0
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +1 -0
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
- package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +1 -0
- package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -0
- package/dist/esm/modules/email/email.service.js +1 -0
- package/dist/esm/modules/email/email.service.js.map +1 -0
- package/dist/esm/modules/error-handler/error-handler.controller.js +4 -0
- package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -0
- package/dist/esm/modules/error-handler/utils/app-error.js +1 -0
- package/dist/esm/modules/error-handler/utils/app-error.js.map +1 -0
- package/dist/esm/modules/error-handler/utils/catch-async.js +1 -0
- package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -0
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +3 -0
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -0
- package/dist/esm/modules/file-upload/file-upload.controller.js +1 -0
- package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -0
- package/dist/esm/modules/file-upload/file-upload.router.js +1 -0
- package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -0
- package/dist/esm/modules/file-upload/file-upload.service.js +1 -0
- package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -0
- package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -0
- package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -0
- package/dist/esm/modules/swagger/swagger.router.js +1 -0
- package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
- package/dist/esm/paths.js +1 -0
- package/dist/esm/paths.js.map +1 -0
- package/dist/esm/server.js +5 -0
- package/dist/esm/server.js.map +1 -0
- package/dist/esm/types/arkos-config.js +1 -0
- package/dist/esm/types/arkos-config.js.map +1 -0
- package/dist/esm/types/auth.js +1 -0
- package/dist/esm/types/auth.js.map +1 -0
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/router-config.js +1 -0
- package/dist/esm/types/router-config.js.map +1 -0
- package/dist/esm/utils/arkos-env.js +1 -0
- package/dist/esm/utils/arkos-env.js.map +1 -0
- package/dist/esm/utils/cli/build.js +6 -0
- package/dist/esm/utils/cli/build.js.map +1 -0
- package/dist/esm/utils/cli/dev.js +5 -0
- package/dist/esm/utils/cli/dev.js.map +1 -0
- package/dist/esm/utils/cli/generate.js +12 -0
- package/dist/esm/utils/cli/generate.js.map +1 -0
- package/dist/esm/utils/cli/index.js +1 -0
- package/dist/esm/utils/cli/index.js.map +1 -0
- package/dist/esm/utils/cli/start.js +5 -0
- package/dist/esm/utils/cli/start.js.map +1 -0
- package/dist/esm/utils/cli/utils/cli.helpers.js +1 -0
- package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +21 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +12 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +206 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +36 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +18 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +15 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generators.js +2 -0
- package/dist/esm/utils/cli/utils/template-generators.js.map +1 -0
- package/dist/esm/utils/dotenv.helpers.js +1 -0
- package/dist/esm/utils/dotenv.helpers.js.map +1 -0
- package/dist/esm/utils/features/api.features.js +1 -0
- package/dist/esm/utils/features/api.features.js.map +1 -0
- package/dist/esm/utils/features/change-case.features.js +1 -0
- package/dist/esm/utils/features/change-case.features.js.map +1 -0
- package/dist/esm/utils/helpers/api.features.helpers.js +1 -0
- package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/change-case.helpers.js +1 -0
- package/dist/esm/utils/helpers/change-case.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/deepmerge.helper.js +1 -0
- package/dist/esm/utils/helpers/deepmerge.helper.js.map +1 -0
- package/dist/esm/utils/helpers/fs.helpers.js +1 -0
- package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/global.helpers.js +1 -0
- package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/models.helpers.js +11 -0
- package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/prisma.helpers.js +1 -0
- package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/query-parser.helpers.js +1 -0
- package/dist/esm/utils/helpers/query-parser.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/routers.helpers.js +1 -0
- package/dist/esm/utils/helpers/routers.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/text.helpers.js +1 -0
- package/dist/esm/utils/helpers/text.helpers.js.map +1 -0
- package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -0
- package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -0
- package/dist/esm/utils/prisma/prisma-json-schema-generator.js +1 -0
- package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -0
- package/dist/esm/utils/prisma/prisma-schema-parser.js +3 -0
- package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -0
- package/dist/esm/utils/prisma/types.js +1 -0
- package/dist/esm/utils/prisma/types.js.map +1 -0
- package/dist/esm/utils/sheu.js +1 -0
- package/dist/esm/utils/sheu.js.map +1 -0
- package/dist/esm/utils/validate-dto.js +1 -0
- package/dist/esm/utils/validate-dto.js.map +1 -0
- package/dist/esm/utils/validate-schema.js +1 -0
- package/dist/esm/utils/validate-schema.js.map +1 -0
- package/package.json +6 -4
- package/dist/cjs/index.js +0 -22
- package/dist/esm/index.d.mts +0 -280
- package/dist/esm/index.mjs +0 -22
- package/dist/exports/index.js +0 -1
- package/dist/types/arkos-config.js +0 -1
- package/dist/types/auth.js +0 -1
- package/dist/types/index.js +0 -1
- package/dist/types/router-config.js +0 -1
- package/dist/utils/arkos-env.js +0 -1
- package/dist/utils/dotenv.helpers.js +0 -1
- package/dist/utils/sheu.js +0 -1
- package/dist/utils/validate-dto.js +0 -1
- package/dist/utils/validate-schema.js +0 -1
|
@@ -1,167 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.apiFeatures = void 0;
|
|
7
|
-
const deepmerge_helper_1 = __importDefault(require("../helpers/deepmerge.helper"));
|
|
8
|
-
const api_features_helpers_1 = require("../helpers/api.features.helpers");
|
|
9
|
-
const app_error_1 = __importDefault(require("../../modules/error-handler/utils/app-error"));
|
|
10
|
-
const prisma_helpers_1 = require("../helpers/prisma.helpers");
|
|
11
|
-
class APIFeatures {
|
|
12
|
-
constructor(req, modelName) {
|
|
13
|
-
this.filters = {};
|
|
14
|
-
this.reqFiltersSearchParam = {};
|
|
15
|
-
this.excludedFields = [
|
|
16
|
-
"page",
|
|
17
|
-
"filters",
|
|
18
|
-
"sort",
|
|
19
|
-
"limit",
|
|
20
|
-
"fields",
|
|
21
|
-
"addFields",
|
|
22
|
-
"removeFields",
|
|
23
|
-
"search",
|
|
24
|
-
"include",
|
|
25
|
-
"filterMode",
|
|
26
|
-
"where",
|
|
27
|
-
"prismaQueryOptions",
|
|
28
|
-
"ignoredFields",
|
|
29
|
-
];
|
|
30
|
-
if (req) {
|
|
31
|
-
const { filters = "{}", ...restOfQuery } = req.query;
|
|
32
|
-
this.req = req;
|
|
33
|
-
this.searchParams = (0, deepmerge_helper_1.default)((0, api_features_helpers_1.parseQueryParamsWithModifiers)(restOfQuery), JSON.parse(filters));
|
|
34
|
-
}
|
|
35
|
-
if (modelName)
|
|
36
|
-
this.modelName = modelName;
|
|
37
|
-
this.filters = { ...this.filters };
|
|
38
|
-
}
|
|
39
|
-
setup(req, modelName) {
|
|
40
|
-
if (req) {
|
|
41
|
-
const { filters = "{}", ...restOfQuery } = req.query;
|
|
42
|
-
this.req = req;
|
|
43
|
-
this.searchParams = (0, deepmerge_helper_1.default)((0, api_features_helpers_1.parseQueryParamsWithModifiers)(restOfQuery), JSON.parse(filters));
|
|
44
|
-
}
|
|
45
|
-
if (modelName)
|
|
46
|
-
this.modelName = modelName;
|
|
47
|
-
this.filters = { ...this.filters };
|
|
48
|
-
return this;
|
|
49
|
-
}
|
|
50
|
-
filter() {
|
|
51
|
-
if (!this.req)
|
|
52
|
-
throw new Error("Trying to use APIFeatures.filter() without passing request on class constructor or APIFeatures.setup() method. read more about at www.arkosjs.com/docs/advanced-guide/api-features-class");
|
|
53
|
-
const searchableFields = [];
|
|
54
|
-
const queryObj = { ...this.searchParams };
|
|
55
|
-
this.excludedFields.forEach((el) => delete queryObj[el]);
|
|
56
|
-
const whereObj = { ...this.req.params, ...queryObj };
|
|
57
|
-
const whereLogicalOperatorFilters = Object.keys(whereObj).map((key) => ({
|
|
58
|
-
[key]: whereObj[key],
|
|
59
|
-
}));
|
|
60
|
-
let whereOptions = whereLogicalOperatorFilters.length > 0
|
|
61
|
-
? {
|
|
62
|
-
[this.req.query?.filterMode ?? "OR"]: whereLogicalOperatorFilters,
|
|
63
|
-
}
|
|
64
|
-
: {};
|
|
65
|
-
if (!!this.searchParams.search) {
|
|
66
|
-
const prisma = (0, prisma_helpers_1.getPrismaInstance)();
|
|
67
|
-
if (this.modelName)
|
|
68
|
-
Object.keys(prisma[this.modelName].fields).forEach((key) => {
|
|
69
|
-
const field = prisma[this.modelName].fields[key];
|
|
70
|
-
if (field?.typeName === "String" &&
|
|
71
|
-
key !== "id" &&
|
|
72
|
-
key !== "password" &&
|
|
73
|
-
!field.isList &&
|
|
74
|
-
!key?.includes?.("Id") &&
|
|
75
|
-
!key?.includes?.("ID")) {
|
|
76
|
-
searchableFields.push({
|
|
77
|
-
[`${key}`]: {
|
|
78
|
-
contains: this.searchParams.search,
|
|
79
|
-
mode: "insensitive",
|
|
80
|
-
},
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
whereOptions = (0, deepmerge_helper_1.default)({
|
|
85
|
-
OR: searchableFields,
|
|
86
|
-
}, whereOptions);
|
|
87
|
-
}
|
|
88
|
-
const firstMerge = (0, deepmerge_helper_1.default)({
|
|
89
|
-
where: whereOptions,
|
|
90
|
-
}, this.req.prismaQueryOptions || {});
|
|
91
|
-
this.filters = (0, deepmerge_helper_1.default)(firstMerge, this.filters);
|
|
92
|
-
return this;
|
|
93
|
-
}
|
|
94
|
-
search() {
|
|
95
|
-
if (this.searchParams?.search) {
|
|
96
|
-
this.filters = (0, deepmerge_helper_1.default)(this.filters, {
|
|
97
|
-
where: {
|
|
98
|
-
OR: [],
|
|
99
|
-
},
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
sort() {
|
|
104
|
-
if (this.searchParams.sort) {
|
|
105
|
-
const sortBy = this.searchParams?.sort
|
|
106
|
-
?.split(",")
|
|
107
|
-
?.map((field) => ({
|
|
108
|
-
[field.startsWith("-") ? field.substring(1) : field]: field.startsWith("-") ? "desc" : "asc",
|
|
109
|
-
}));
|
|
110
|
-
this.filters = (0, deepmerge_helper_1.default)(this.filters, { orderBy: sortBy });
|
|
111
|
-
}
|
|
112
|
-
return this;
|
|
113
|
-
}
|
|
114
|
-
limitFields() {
|
|
115
|
-
if (this.searchParams?.fields) {
|
|
116
|
-
const fields = this.searchParams.fields.split(",");
|
|
117
|
-
const regularFields = fields.filter((field) => !field.startsWith("+") && !field.startsWith("-"));
|
|
118
|
-
const includeFields = fields
|
|
119
|
-
.filter((field) => field.startsWith("+"))
|
|
120
|
-
.map((field) => field.substring(1));
|
|
121
|
-
const excludeFields = fields
|
|
122
|
-
.filter((field) => field.startsWith("-"))
|
|
123
|
-
.map((field) => field.substring(1));
|
|
124
|
-
let selection = {};
|
|
125
|
-
if (regularFields.length > 0) {
|
|
126
|
-
selection = regularFields.reduce((acc, field) => {
|
|
127
|
-
acc[field] = true;
|
|
128
|
-
return acc;
|
|
129
|
-
}, {});
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
selection = this.filters.include || {};
|
|
133
|
-
includeFields.forEach((field) => {
|
|
134
|
-
selection[field] = true;
|
|
135
|
-
});
|
|
136
|
-
excludeFields.forEach((field) => {
|
|
137
|
-
selection[field] = false;
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
this.filters = {
|
|
141
|
-
...this.filters,
|
|
142
|
-
select: selection,
|
|
143
|
-
};
|
|
144
|
-
if (this.filters.include) {
|
|
145
|
-
delete this.filters.include;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
if (this.searchParams?.addFields || this.searchParams?.removeFields) {
|
|
149
|
-
throw new app_error_1.default("The addFields and removeFields parameters are deprecated. Please use fields with + and - prefixes instead.", 400);
|
|
150
|
-
}
|
|
151
|
-
return this;
|
|
152
|
-
}
|
|
153
|
-
paginate() {
|
|
154
|
-
const page = parseInt(this.searchParams.page, 10) || 1;
|
|
155
|
-
const limit = parseInt(this.searchParams.limit, 10) || 30;
|
|
156
|
-
const skip = (page - 1) * limit;
|
|
157
|
-
this.filters = {
|
|
158
|
-
...this.filters,
|
|
159
|
-
skip,
|
|
160
|
-
take: limit,
|
|
161
|
-
};
|
|
162
|
-
return this;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
exports.default = APIFeatures;
|
|
166
|
-
exports.apiFeatures = new APIFeatures();
|
|
167
|
-
//# sourceMappingURL=api.features.js.map
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.apiFeatures=void 0;const deepmerge_helper_1=__importDefault(require("../helpers/deepmerge.helper")),api_features_helpers_1=require("../helpers/api.features.helpers"),app_error_1=__importDefault(require("../../modules/error-handler/utils/app-error")),prisma_helpers_1=require("../helpers/prisma.helpers");class APIFeatures{constructor(t,e){if(this.filters={},this.reqFiltersSearchParam={},this.excludedFields=["page","filters","sort","limit","fields","addFields","removeFields","search","include","filterMode","where","prismaQueryOptions","ignoredFields"],t){const{filters:r="{}",...h}=t.query;this.req=t,this.searchParams=(0,deepmerge_helper_1.default)((0,api_features_helpers_1.parseQueryParamsWithModifiers)(h),JSON.parse(r))}e&&(this.modelName=e),this.filters={...this.filters}}setup(t,e){if(t){const{filters:r="{}",...h}=t.query;this.req=t,this.searchParams=(0,deepmerge_helper_1.default)((0,api_features_helpers_1.parseQueryParamsWithModifiers)(h),JSON.parse(r))}return e&&(this.modelName=e),this.filters={...this.filters},this}filter(){if(!this.req)throw new Error("Trying to use APIFeatures.filter() without passing request on class constructor or APIFeatures.setup() method. read more about at www.arkosjs.com/docs/advanced-guide/api-features-class");const t=[],e={...this.searchParams};this.excludedFields.forEach(a=>delete e[a]);const r={...this.req.params,...e},h=Object.keys(r).map(a=>({[a]:r[a]}));let i=h.length>0?{[this.req.query?.filterMode??"OR"]:h}:{};if(this.searchParams.search){const a=(0,prisma_helpers_1.getPrismaInstance)();this.modelName&&Object.keys(a[this.modelName].fields).forEach(l=>{const d=a[this.modelName].fields[l];d?.typeName==="String"&&l!=="id"&&l!=="password"&&!d.isList&&!l?.includes?.("Id")&&!l?.includes?.("ID")&&t.push({[`${l}`]:{contains:this.searchParams.search,mode:"insensitive"}})}),i=(0,deepmerge_helper_1.default)({OR:t},i)}const s=(0,deepmerge_helper_1.default)({where:i},this.req.prismaQueryOptions||{});return this.filters=(0,deepmerge_helper_1.default)(s,this.filters),this}search(){this.searchParams?.search&&(this.filters=(0,deepmerge_helper_1.default)(this.filters,{where:{OR:[]}}))}sort(){if(this.searchParams.sort){const t=this.searchParams?.sort?.split(",")?.map(e=>({[e.startsWith("-")?e.substring(1):e]:e.startsWith("-")?"desc":"asc"}));this.filters=(0,deepmerge_helper_1.default)(this.filters,{orderBy:t})}return this}limitFields(){if(this.searchParams?.fields){const t=this.searchParams.fields.split(","),e=t.filter(s=>!s.startsWith("+")&&!s.startsWith("-")),r=t.filter(s=>s.startsWith("+")).map(s=>s.substring(1)),h=t.filter(s=>s.startsWith("-")).map(s=>s.substring(1));let i={};e.length>0?i=e.reduce((s,a)=>(s[a]=!0,s),{}):(i=this.filters.include||{},r.forEach(s=>{i[s]=!0}),h.forEach(s=>{i[s]=!1})),this.filters={...this.filters,select:i},this.filters.include&&delete this.filters.include}if(this.searchParams?.addFields||this.searchParams?.removeFields)throw new app_error_1.default("The addFields and removeFields parameters are deprecated. Please use fields with + and - prefixes instead.",400);return this}paginate(){const t=parseInt(this.searchParams.page,10)||1,e=parseInt(this.searchParams.limit,10)||30,r=(t-1)*e;return this.filters={...this.filters,skip:r,take:e},this}}exports.default=APIFeatures,exports.apiFeatures=new APIFeatures;
|
|
@@ -1,67 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.snakeCase = exports.sentenceCase = exports.pathCase = exports.pascalCase = exports.kebabCase = exports.noCase = exports.trainCase = exports.dotCase = exports.constantCase = exports.capitalCase = exports.camelCase = void 0;
|
|
37
|
-
const changeCase = __importStar(require("../helpers/change-case.helpers"));
|
|
38
|
-
const isObject = (object) => object !== null && typeof object === "object";
|
|
39
|
-
function changeKeysFactory(changeCase) {
|
|
40
|
-
return function changeKeys(object, depth = 1, options) {
|
|
41
|
-
if (depth === 0 || !isObject(object))
|
|
42
|
-
return object;
|
|
43
|
-
if (Array.isArray(object)) {
|
|
44
|
-
return object.map((item) => changeKeys(item, depth - 1, options));
|
|
45
|
-
}
|
|
46
|
-
const result = Object.create(Object.getPrototypeOf(object));
|
|
47
|
-
Object.keys(object).forEach((key) => {
|
|
48
|
-
const value = object[key];
|
|
49
|
-
const changedKey = changeCase(key, options);
|
|
50
|
-
const changedValue = changeKeys(value, depth - 1, options);
|
|
51
|
-
result[changedKey] = changedValue;
|
|
52
|
-
});
|
|
53
|
-
return result;
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
exports.camelCase = changeKeysFactory(changeCase.camelCase);
|
|
57
|
-
exports.capitalCase = changeKeysFactory(changeCase.capitalCase);
|
|
58
|
-
exports.constantCase = changeKeysFactory(changeCase.constantCase);
|
|
59
|
-
exports.dotCase = changeKeysFactory(changeCase.dotCase);
|
|
60
|
-
exports.trainCase = changeKeysFactory(changeCase.trainCase);
|
|
61
|
-
exports.noCase = changeKeysFactory(changeCase.noCase);
|
|
62
|
-
exports.kebabCase = changeKeysFactory(changeCase.kebabCase);
|
|
63
|
-
exports.pascalCase = changeKeysFactory(changeCase.pascalCase);
|
|
64
|
-
exports.pathCase = changeKeysFactory(changeCase.pathCase);
|
|
65
|
-
exports.sentenceCase = changeKeysFactory(changeCase.sentenceCase);
|
|
66
|
-
exports.snakeCase = changeKeysFactory(changeCase.snakeCase);
|
|
67
|
-
//# sourceMappingURL=change-case.features.js.map
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(s,e,t,a){a===void 0&&(a=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,a,r)}:function(s,e,t,a){a===void 0&&(a=t),s[a]=e[t]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}:function(s,e){s.default=e}),__importStar=this&&this.__importStar||function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var a=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(a[a.length]=r);return a},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var a=s(e),r=0;r<a.length;r++)a[r]!=="default"&&__createBinding(t,e,a[r]);return __setModuleDefault(t,e),t}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.snakeCase=exports.sentenceCase=exports.pathCase=exports.pascalCase=exports.kebabCase=exports.noCase=exports.trainCase=exports.dotCase=exports.constantCase=exports.capitalCase=exports.camelCase=void 0;const changeCase=__importStar(require("../helpers/change-case.helpers")),isObject=s=>s!==null&&typeof s=="object";function changeKeysFactory(s){return function e(t,a=1,r){if(a===0||!isObject(t))return t;if(Array.isArray(t))return t.map(n=>e(n,a-1,r));const o=Object.create(Object.getPrototypeOf(t));return Object.keys(t).forEach(n=>{const c=t[n],u=s(n,r),i=e(c,a-1,r);o[u]=i}),o}}exports.camelCase=changeKeysFactory(changeCase.camelCase),exports.capitalCase=changeKeysFactory(changeCase.capitalCase),exports.constantCase=changeKeysFactory(changeCase.constantCase),exports.dotCase=changeKeysFactory(changeCase.dotCase),exports.trainCase=changeKeysFactory(changeCase.trainCase),exports.noCase=changeKeysFactory(changeCase.noCase),exports.kebabCase=changeKeysFactory(changeCase.kebabCase),exports.pascalCase=changeKeysFactory(changeCase.pascalCase),exports.pathCase=changeKeysFactory(changeCase.pathCase),exports.sentenceCase=changeKeysFactory(changeCase.sentenceCase),exports.snakeCase=changeKeysFactory(changeCase.snakeCase);
|
|
@@ -1,106 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseQueryParamsWithModifiers = parseQueryParamsWithModifiers;
|
|
4
|
-
const DEFAULT_FIELD_CONFIG = {
|
|
5
|
-
dateFields: ["createdAt", "updatedAt", "deletedAt", "date"],
|
|
6
|
-
booleanFields: ["isActive", "isDeleted", "isPublished", "isArchived"],
|
|
7
|
-
numericFields: ["age", "price", "quantity", "amount", "rating"],
|
|
8
|
-
};
|
|
9
|
-
function parseQueryParamsWithModifiers(query, fieldConfig = DEFAULT_FIELD_CONFIG) {
|
|
10
|
-
return Object.entries(JSON.parse(JSON.stringify(query))).reduce((acc, [key, value]) => {
|
|
11
|
-
const parts = key.split("__");
|
|
12
|
-
if (!value && value !== false && value !== "false" && parts.length < 2)
|
|
13
|
-
return acc;
|
|
14
|
-
const stringValue = Array.isArray(value) ? value[0]?.toString() : value;
|
|
15
|
-
if (parts.length < 2) {
|
|
16
|
-
acc[key] =
|
|
17
|
-
typeof value === "string" && !Number.isNaN(value)
|
|
18
|
-
? convertValue(stringValue, parts[0], fieldConfig)
|
|
19
|
-
: value;
|
|
20
|
-
return acc;
|
|
21
|
-
}
|
|
22
|
-
const fieldName = parts[0];
|
|
23
|
-
if (fieldName === "orderBy" && parts.length === 2) {
|
|
24
|
-
if (!acc.orderBy)
|
|
25
|
-
acc.orderBy = {};
|
|
26
|
-
acc.orderBy[parts[1]] = stringValue;
|
|
27
|
-
return acc;
|
|
28
|
-
}
|
|
29
|
-
if (parts.length === 1) {
|
|
30
|
-
acc[fieldName] = {
|
|
31
|
-
equals: convertValue(stringValue, fieldName, fieldConfig),
|
|
32
|
-
};
|
|
33
|
-
return acc;
|
|
34
|
-
}
|
|
35
|
-
let currentLevel = acc;
|
|
36
|
-
let currentKey = fieldName;
|
|
37
|
-
for (let i = 1; i < parts.length - 1; i++) {
|
|
38
|
-
if (!currentLevel[currentKey]) {
|
|
39
|
-
currentLevel[currentKey] = {};
|
|
40
|
-
}
|
|
41
|
-
currentLevel = currentLevel[currentKey];
|
|
42
|
-
currentKey = parts[i];
|
|
43
|
-
}
|
|
44
|
-
const lastOperator = parts[parts.length - 1];
|
|
45
|
-
switch (lastOperator) {
|
|
46
|
-
case "icontains":
|
|
47
|
-
currentLevel[currentKey] = {
|
|
48
|
-
contains: stringValue,
|
|
49
|
-
mode: "insensitive",
|
|
50
|
-
};
|
|
51
|
-
break;
|
|
52
|
-
case "contains":
|
|
53
|
-
currentLevel[currentKey] = {
|
|
54
|
-
contains: stringValue,
|
|
55
|
-
mode: "sensitive",
|
|
56
|
-
};
|
|
57
|
-
break;
|
|
58
|
-
case "in":
|
|
59
|
-
case "notIn":
|
|
60
|
-
currentLevel[currentKey] = {
|
|
61
|
-
[lastOperator]: stringValue
|
|
62
|
-
.split(",")
|
|
63
|
-
.map((v) => convertValue(v.trim(), fieldName, fieldConfig)),
|
|
64
|
-
};
|
|
65
|
-
break;
|
|
66
|
-
case "or":
|
|
67
|
-
const values = stringValue.split(",");
|
|
68
|
-
if (!acc.OR)
|
|
69
|
-
acc.OR = [];
|
|
70
|
-
acc.OR.push(...values.map((val) => ({
|
|
71
|
-
[fieldName]: {
|
|
72
|
-
equals: convertValue(val.trim(), fieldName, fieldConfig),
|
|
73
|
-
},
|
|
74
|
-
})));
|
|
75
|
-
break;
|
|
76
|
-
case "isNull":
|
|
77
|
-
currentLevel[currentKey] = {
|
|
78
|
-
equals: stringValue.toLowerCase() === "true" ? null : undefined,
|
|
79
|
-
};
|
|
80
|
-
break;
|
|
81
|
-
case "isEmpty":
|
|
82
|
-
currentLevel[currentKey] = {
|
|
83
|
-
equals: stringValue.toLowerCase() === "true" ? "" : undefined,
|
|
84
|
-
};
|
|
85
|
-
break;
|
|
86
|
-
default:
|
|
87
|
-
currentLevel[currentKey] = {
|
|
88
|
-
[lastOperator]: convertValue(stringValue, fieldName, fieldConfig),
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
return acc;
|
|
92
|
-
}, {});
|
|
93
|
-
}
|
|
94
|
-
function convertValue(value, fieldName, config) {
|
|
95
|
-
if (config.dateFields?.includes?.(fieldName) && value) {
|
|
96
|
-
return new Date(value);
|
|
97
|
-
}
|
|
98
|
-
if (config.booleanFields?.includes?.(fieldName) && value) {
|
|
99
|
-
return value.toLowerCase() === "true";
|
|
100
|
-
}
|
|
101
|
-
if (config.numericFields?.includes?.(fieldName) && value) {
|
|
102
|
-
return Number(value);
|
|
103
|
-
}
|
|
104
|
-
return value;
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=api.features.helpers.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseQueryParamsWithModifiers=parseQueryParamsWithModifiers;const DEFAULT_FIELD_CONFIG={dateFields:["createdAt","updatedAt","deletedAt","date"],booleanFields:["isActive","isDeleted","isPublished","isArchived"],numericFields:["age","price","quantity","amount","rating"]};function parseQueryParamsWithModifiers(n,o=DEFAULT_FIELD_CONFIG){return Object.entries(JSON.parse(JSON.stringify(n))).reduce((e,[b,u])=>{const t=b.split("__");if(!u&&u!==!1&&u!=="false"&&t.length<2)return e;const r=Array.isArray(u)?u[0]?.toString():u;if(t.length<2)return e[b]=typeof u=="string"&&!Number.isNaN(u)?convertValue(r,t[0],o):u,e;const d=t[0];if(d==="orderBy"&&t.length===2)return e.orderBy||(e.orderBy={}),e.orderBy[t[1]]=r,e;if(t.length===1)return e[d]={equals:convertValue(r,d,o)},e;let s=e,i=d;for(let a=1;a<t.length-1;a++)s[i]||(s[i]={}),s=s[i],i=t[a];const l=t[t.length-1];switch(l){case"icontains":s[i]={contains:r,mode:"insensitive"};break;case"contains":s[i]={contains:r,mode:"sensitive"};break;case"in":case"notIn":s[i]={[l]:r.split(",").map(p=>convertValue(p.trim(),d,o))};break;case"or":const a=r.split(",");e.OR||(e.OR=[]),e.OR.push(...a.map(p=>({[d]:{equals:convertValue(p.trim(),d,o)}})));break;case"isNull":s[i]={equals:r.toLowerCase()==="true"?null:void 0};break;case"isEmpty":s[i]={equals:r.toLowerCase()==="true"?"":void 0};break;default:s[i]={[l]:convertValue(r,d,o)}}return e},{})}function convertValue(n,o,e){return e.dateFields?.includes?.(o)&&n?new Date(n):e.booleanFields?.includes?.(o)&&n?n.toLowerCase()==="true":e.numericFields?.includes?.(o)&&n?Number(n):n}
|
|
@@ -1,177 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.split = split;
|
|
4
|
-
exports.splitSeparateNumbers = splitSeparateNumbers;
|
|
5
|
-
exports.noCase = noCase;
|
|
6
|
-
exports.camelCase = camelCase;
|
|
7
|
-
exports.pascalCase = pascalCase;
|
|
8
|
-
exports.pascalSnakeCase = pascalSnakeCase;
|
|
9
|
-
exports.capitalCase = capitalCase;
|
|
10
|
-
exports.constantCase = constantCase;
|
|
11
|
-
exports.dotCase = dotCase;
|
|
12
|
-
exports.kebabCase = kebabCase;
|
|
13
|
-
exports.pathCase = pathCase;
|
|
14
|
-
exports.sentenceCase = sentenceCase;
|
|
15
|
-
exports.snakeCase = snakeCase;
|
|
16
|
-
exports.trainCase = trainCase;
|
|
17
|
-
const SPLIT_LOWER_UPPER_RE = /([\p{Ll}\d])(\p{Lu})/gu;
|
|
18
|
-
const SPLIT_UPPER_UPPER_RE = /(\p{Lu})([\p{Lu}][\p{Ll}])/gu;
|
|
19
|
-
const SPLIT_SEPARATE_NUMBER_RE = /(\d)\p{Ll}|(\p{L})\d/u;
|
|
20
|
-
const DEFAULT_STRIP_REGEXP = /[^\p{L}\d]+/giu;
|
|
21
|
-
const SPLIT_REPLACE_VALUE = "$1\0$2";
|
|
22
|
-
const DEFAULT_PREFIX_SUFFIX_CHARACTERS = "";
|
|
23
|
-
function split(value) {
|
|
24
|
-
let result = value.trim();
|
|
25
|
-
result = result
|
|
26
|
-
.replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE)
|
|
27
|
-
.replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);
|
|
28
|
-
result = result.replace(DEFAULT_STRIP_REGEXP, "\0");
|
|
29
|
-
let start = 0;
|
|
30
|
-
let end = result.length;
|
|
31
|
-
while (result.charAt(start) === "\0")
|
|
32
|
-
start++;
|
|
33
|
-
if (start === end)
|
|
34
|
-
return [];
|
|
35
|
-
while (result.charAt(end - 1) === "\0")
|
|
36
|
-
end--;
|
|
37
|
-
return result.slice(start, end).split(/\0/g);
|
|
38
|
-
}
|
|
39
|
-
function splitSeparateNumbers(value) {
|
|
40
|
-
const words = split(value);
|
|
41
|
-
for (let i = 0; i < words.length; i++) {
|
|
42
|
-
const word = words[i];
|
|
43
|
-
const match = SPLIT_SEPARATE_NUMBER_RE.exec(word);
|
|
44
|
-
if (match) {
|
|
45
|
-
const offset = match.index + (match[1] ?? match[2]).length;
|
|
46
|
-
words.splice(i, 1, word.slice(0, offset), word.slice(offset));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return words;
|
|
50
|
-
}
|
|
51
|
-
function noCase(input, options) {
|
|
52
|
-
const [prefix, words, suffix] = splitPrefixSuffix(input, options);
|
|
53
|
-
return (prefix +
|
|
54
|
-
words.map(lowerFactory(options?.locale)).join(options?.delimiter ?? " ") +
|
|
55
|
-
suffix);
|
|
56
|
-
}
|
|
57
|
-
function camelCase(input, options) {
|
|
58
|
-
const [prefix, words, suffix] = splitPrefixSuffix(input, options);
|
|
59
|
-
const lower = lowerFactory(options?.locale);
|
|
60
|
-
const upper = upperFactory(options?.locale);
|
|
61
|
-
const transform = options?.mergeAmbiguousCharacters
|
|
62
|
-
? capitalCaseTransformFactory(lower, upper)
|
|
63
|
-
: pascalCaseTransformFactory(lower, upper);
|
|
64
|
-
return (prefix +
|
|
65
|
-
words
|
|
66
|
-
.map((word, index) => {
|
|
67
|
-
if (index === 0)
|
|
68
|
-
return lower(word);
|
|
69
|
-
return transform(word, index);
|
|
70
|
-
})
|
|
71
|
-
.join(options?.delimiter ?? "") +
|
|
72
|
-
suffix);
|
|
73
|
-
}
|
|
74
|
-
function pascalCase(input, options) {
|
|
75
|
-
const [prefix, words, suffix] = splitPrefixSuffix(input, options);
|
|
76
|
-
const lower = lowerFactory(options?.locale);
|
|
77
|
-
const upper = upperFactory(options?.locale);
|
|
78
|
-
const transform = options?.mergeAmbiguousCharacters
|
|
79
|
-
? capitalCaseTransformFactory(lower, upper)
|
|
80
|
-
: pascalCaseTransformFactory(lower, upper);
|
|
81
|
-
return prefix + words.map(transform).join(options?.delimiter ?? "") + suffix;
|
|
82
|
-
}
|
|
83
|
-
function pascalSnakeCase(input, options) {
|
|
84
|
-
return capitalCase(input, { delimiter: "_", ...options });
|
|
85
|
-
}
|
|
86
|
-
function capitalCase(input, options) {
|
|
87
|
-
const [prefix, words, suffix] = splitPrefixSuffix(input, options);
|
|
88
|
-
const lower = lowerFactory(options?.locale);
|
|
89
|
-
const upper = upperFactory(options?.locale);
|
|
90
|
-
return (prefix +
|
|
91
|
-
words
|
|
92
|
-
.map(capitalCaseTransformFactory(lower, upper))
|
|
93
|
-
.join(options?.delimiter ?? " ") +
|
|
94
|
-
suffix);
|
|
95
|
-
}
|
|
96
|
-
function constantCase(input, options) {
|
|
97
|
-
const [prefix, words, suffix] = splitPrefixSuffix(input, options);
|
|
98
|
-
return (prefix +
|
|
99
|
-
words.map(upperFactory(options?.locale)).join(options?.delimiter ?? "_") +
|
|
100
|
-
suffix);
|
|
101
|
-
}
|
|
102
|
-
function dotCase(input, options) {
|
|
103
|
-
return noCase(input, { delimiter: ".", ...options });
|
|
104
|
-
}
|
|
105
|
-
function kebabCase(input, options) {
|
|
106
|
-
return noCase(input, { delimiter: "-", ...options });
|
|
107
|
-
}
|
|
108
|
-
function pathCase(input, options) {
|
|
109
|
-
return noCase(input, { delimiter: "/", ...options });
|
|
110
|
-
}
|
|
111
|
-
function sentenceCase(input, options) {
|
|
112
|
-
const [prefix, words, suffix] = splitPrefixSuffix(input, options);
|
|
113
|
-
const lower = lowerFactory(options?.locale);
|
|
114
|
-
const upper = upperFactory(options?.locale);
|
|
115
|
-
const transform = capitalCaseTransformFactory(lower, upper);
|
|
116
|
-
return (prefix +
|
|
117
|
-
words
|
|
118
|
-
.map((word, index) => {
|
|
119
|
-
if (index === 0)
|
|
120
|
-
return transform(word);
|
|
121
|
-
return lower(word);
|
|
122
|
-
})
|
|
123
|
-
.join(options?.delimiter ?? " ") +
|
|
124
|
-
suffix);
|
|
125
|
-
}
|
|
126
|
-
function snakeCase(input, options) {
|
|
127
|
-
return noCase(input, { delimiter: "_", ...options });
|
|
128
|
-
}
|
|
129
|
-
function trainCase(input, options) {
|
|
130
|
-
return capitalCase(input, { delimiter: "-", ...options });
|
|
131
|
-
}
|
|
132
|
-
function lowerFactory(locale) {
|
|
133
|
-
return locale === false
|
|
134
|
-
? (input) => input.toLowerCase()
|
|
135
|
-
: (input) => input.toLocaleLowerCase(locale);
|
|
136
|
-
}
|
|
137
|
-
function upperFactory(locale) {
|
|
138
|
-
return locale === false
|
|
139
|
-
? (input) => input.toUpperCase()
|
|
140
|
-
: (input) => input.toLocaleUpperCase(locale);
|
|
141
|
-
}
|
|
142
|
-
function capitalCaseTransformFactory(lower, upper) {
|
|
143
|
-
return (word) => `${upper(word[0])}${lower(word.slice(1))}`;
|
|
144
|
-
}
|
|
145
|
-
function pascalCaseTransformFactory(lower, upper) {
|
|
146
|
-
return (word, index) => {
|
|
147
|
-
const char0 = word[0];
|
|
148
|
-
const initial = index > 0 && char0 >= "0" && char0 <= "9" ? "_" + char0 : upper(char0);
|
|
149
|
-
return initial + lower(word.slice(1));
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
function splitPrefixSuffix(input, options = {}) {
|
|
153
|
-
const splitFn = options.split ?? (options.separateNumbers ? splitSeparateNumbers : split);
|
|
154
|
-
const prefixCharacters = options.prefixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;
|
|
155
|
-
const suffixCharacters = options.suffixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;
|
|
156
|
-
let prefixIndex = 0;
|
|
157
|
-
let suffixIndex = input.length;
|
|
158
|
-
while (prefixIndex < input.length) {
|
|
159
|
-
const char = input.charAt(prefixIndex);
|
|
160
|
-
if (!prefixCharacters?.includes?.(char))
|
|
161
|
-
break;
|
|
162
|
-
prefixIndex++;
|
|
163
|
-
}
|
|
164
|
-
while (suffixIndex > prefixIndex) {
|
|
165
|
-
const index = suffixIndex - 1;
|
|
166
|
-
const char = input.charAt(index);
|
|
167
|
-
if (!suffixCharacters?.includes?.(char))
|
|
168
|
-
break;
|
|
169
|
-
suffixIndex = index;
|
|
170
|
-
}
|
|
171
|
-
return [
|
|
172
|
-
input.slice(0, prefixIndex),
|
|
173
|
-
splitFn(input.slice(prefixIndex, suffixIndex)),
|
|
174
|
-
input.slice(suffixIndex),
|
|
175
|
-
];
|
|
176
|
-
}
|
|
177
|
-
//# sourceMappingURL=change-case.helpers.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.split=split,exports.splitSeparateNumbers=splitSeparateNumbers,exports.noCase=noCase,exports.camelCase=camelCase,exports.pascalCase=pascalCase,exports.pascalSnakeCase=pascalSnakeCase,exports.capitalCase=capitalCase,exports.constantCase=constantCase,exports.dotCase=dotCase,exports.kebabCase=kebabCase,exports.pathCase=pathCase,exports.sentenceCase=sentenceCase,exports.snakeCase=snakeCase,exports.trainCase=trainCase;const SPLIT_LOWER_UPPER_RE=/([\p{Ll}\d])(\p{Lu})/gu,SPLIT_UPPER_UPPER_RE=/(\p{Lu})([\p{Lu}][\p{Ll}])/gu,SPLIT_SEPARATE_NUMBER_RE=/(\d)\p{Ll}|(\p{L})\d/u,DEFAULT_STRIP_REGEXP=/[^\p{L}\d]+/giu,SPLIT_REPLACE_VALUE="$1\0$2",DEFAULT_PREFIX_SUFFIX_CHARACTERS="";function split(r){let e=r.trim();e=e.replace(SPLIT_LOWER_UPPER_RE,SPLIT_REPLACE_VALUE).replace(SPLIT_UPPER_UPPER_RE,SPLIT_REPLACE_VALUE),e=e.replace(DEFAULT_STRIP_REGEXP,"\0");let t=0,s=e.length;for(;e.charAt(t)==="\0";)t++;if(t===s)return[];for(;e.charAt(s-1)==="\0";)s--;return e.slice(t,s).split(/\0/g)}function splitSeparateNumbers(r){const e=split(r);for(let t=0;t<e.length;t++){const s=e[t],a=SPLIT_SEPARATE_NUMBER_RE.exec(s);if(a){const c=a.index+(a[1]??a[2]).length;e.splice(t,1,s.slice(0,c),s.slice(c))}}return e}function noCase(r,e){const[t,s,a]=splitPrefixSuffix(r,e);return t+s.map(lowerFactory(e?.locale)).join(e?.delimiter??" ")+a}function camelCase(r,e){const[t,s,a]=splitPrefixSuffix(r,e),c=lowerFactory(e?.locale),n=upperFactory(e?.locale),l=e?.mergeAmbiguousCharacters?capitalCaseTransformFactory(c,n):pascalCaseTransformFactory(c,n);return t+s.map((i,o)=>o===0?c(i):l(i,o)).join(e?.delimiter??"")+a}function pascalCase(r,e){const[t,s,a]=splitPrefixSuffix(r,e),c=lowerFactory(e?.locale),n=upperFactory(e?.locale),l=e?.mergeAmbiguousCharacters?capitalCaseTransformFactory(c,n):pascalCaseTransformFactory(c,n);return t+s.map(l).join(e?.delimiter??"")+a}function pascalSnakeCase(r,e){return capitalCase(r,{delimiter:"_",...e})}function capitalCase(r,e){const[t,s,a]=splitPrefixSuffix(r,e),c=lowerFactory(e?.locale),n=upperFactory(e?.locale);return t+s.map(capitalCaseTransformFactory(c,n)).join(e?.delimiter??" ")+a}function constantCase(r,e){const[t,s,a]=splitPrefixSuffix(r,e);return t+s.map(upperFactory(e?.locale)).join(e?.delimiter??"_")+a}function dotCase(r,e){return noCase(r,{delimiter:".",...e})}function kebabCase(r,e){return noCase(r,{delimiter:"-",...e})}function pathCase(r,e){return noCase(r,{delimiter:"/",...e})}function sentenceCase(r,e){const[t,s,a]=splitPrefixSuffix(r,e),c=lowerFactory(e?.locale),n=upperFactory(e?.locale),l=capitalCaseTransformFactory(c,n);return t+s.map((i,o)=>o===0?l(i):c(i)).join(e?.delimiter??" ")+a}function snakeCase(r,e){return noCase(r,{delimiter:"_",...e})}function trainCase(r,e){return capitalCase(r,{delimiter:"-",...e})}function lowerFactory(r){return r===!1?e=>e.toLowerCase():e=>e.toLocaleLowerCase(r)}function upperFactory(r){return r===!1?e=>e.toUpperCase():e=>e.toLocaleUpperCase(r)}function capitalCaseTransformFactory(r,e){return t=>`${e(t[0])}${r(t.slice(1))}`}function pascalCaseTransformFactory(r,e){return(t,s)=>{const a=t[0];return(s>0&&a>="0"&&a<="9"?"_"+a:e(a))+r(t.slice(1))}}function splitPrefixSuffix(r,e={}){const t=e.split??(e.separateNumbers?splitSeparateNumbers:split),s=e.prefixCharacters??DEFAULT_PREFIX_SUFFIX_CHARACTERS,a=e.suffixCharacters??DEFAULT_PREFIX_SUFFIX_CHARACTERS;let c=0,n=r.length;for(;c<r.length;){const l=r.charAt(c);if(!s?.includes?.(l))break;c++}for(;n>c;){const l=n-1,i=r.charAt(l);if(!a?.includes?.(i))break;n=l}return[r.slice(0,c),t(r.slice(c,n)),r.slice(n)]}
|
|
@@ -1,115 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
function isMergeableObject(value) {
|
|
4
|
-
return isNonNullObject(value) && !isSpecial(value);
|
|
5
|
-
}
|
|
6
|
-
function isNonNullObject(value) {
|
|
7
|
-
return !!value && typeof value === "object";
|
|
8
|
-
}
|
|
9
|
-
function isSpecial(value) {
|
|
10
|
-
const stringValue = Object.prototype.toString.call(value);
|
|
11
|
-
return stringValue === "[object RegExp]" || stringValue === "[object Date]";
|
|
12
|
-
}
|
|
13
|
-
function emptyTarget(val) {
|
|
14
|
-
return Array.isArray(val) ? [] : {};
|
|
15
|
-
}
|
|
16
|
-
function getKeys(target) {
|
|
17
|
-
const objectKeys = Object.keys(target);
|
|
18
|
-
const symbolKeys = getEnumerableOwnPropertySymbols(target);
|
|
19
|
-
return [...objectKeys, ...symbolKeys];
|
|
20
|
-
}
|
|
21
|
-
function getEnumerableOwnPropertySymbols(target) {
|
|
22
|
-
return Object.getOwnPropertySymbols
|
|
23
|
-
? Object.getOwnPropertySymbols(target).filter(function (symbol) {
|
|
24
|
-
return Object.propertyIsEnumerable.call(target, symbol);
|
|
25
|
-
})
|
|
26
|
-
: [];
|
|
27
|
-
}
|
|
28
|
-
function cloneUnlessOtherwiseSpecified(value, options) {
|
|
29
|
-
return options.clone !== false && options.isMergeableObject?.(value)
|
|
30
|
-
? deepmerge(emptyTarget(value), value, options)
|
|
31
|
-
: value;
|
|
32
|
-
}
|
|
33
|
-
function defaultArrayMerge(target, source, options) {
|
|
34
|
-
return target.concat(source).map(function (element) {
|
|
35
|
-
return options.cloneUnlessOtherwiseSpecified(element, options);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
function getMergeFunction(key, options) {
|
|
39
|
-
if (!options.customMerge) {
|
|
40
|
-
return deepmerge;
|
|
41
|
-
}
|
|
42
|
-
const customMerge = options.customMerge(key);
|
|
43
|
-
return typeof customMerge === "function" ? customMerge : deepmerge;
|
|
44
|
-
}
|
|
45
|
-
function propertyIsOnObject(object, property) {
|
|
46
|
-
try {
|
|
47
|
-
return property in object;
|
|
48
|
-
}
|
|
49
|
-
catch (_) {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
function propertyIsUnsafe(target, key) {
|
|
54
|
-
return (propertyIsOnObject(target, key) &&
|
|
55
|
-
!(Object.hasOwnProperty.call(target, key) &&
|
|
56
|
-
Object.propertyIsEnumerable.call(target, key)));
|
|
57
|
-
}
|
|
58
|
-
function mergeObject(target, source, options) {
|
|
59
|
-
const destination = {};
|
|
60
|
-
if (options.isMergeableObject?.(target)) {
|
|
61
|
-
getKeys(target).forEach(function (key) {
|
|
62
|
-
destination[key] = options.cloneUnlessOtherwiseSpecified
|
|
63
|
-
? options.cloneUnlessOtherwiseSpecified(target[key], options)
|
|
64
|
-
: target[key];
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
getKeys(source).forEach(function (key) {
|
|
68
|
-
if (propertyIsUnsafe(target, key)) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
if (propertyIsOnObject(target, key) &&
|
|
72
|
-
options.isMergeableObject?.(source[key])) {
|
|
73
|
-
destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
destination[key] = options.cloneUnlessOtherwiseSpecified
|
|
77
|
-
? options.cloneUnlessOtherwiseSpecified(source[key], options)
|
|
78
|
-
: source[key];
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
return destination;
|
|
82
|
-
}
|
|
83
|
-
function deepmerge(target, source, options) {
|
|
84
|
-
options = options || {};
|
|
85
|
-
const mergeOptions = {
|
|
86
|
-
arrayMerge: options.arrayMerge || defaultArrayMerge,
|
|
87
|
-
isMergeableObject: options.isMergeableObject || isMergeableObject,
|
|
88
|
-
cloneUnlessOtherwiseSpecified: options.cloneUnlessOtherwiseSpecified || cloneUnlessOtherwiseSpecified,
|
|
89
|
-
clone: options.clone,
|
|
90
|
-
customMerge: options.customMerge,
|
|
91
|
-
};
|
|
92
|
-
const sourceIsArray = Array.isArray(source);
|
|
93
|
-
const targetIsArray = Array.isArray(target);
|
|
94
|
-
const sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
|
|
95
|
-
if (!sourceAndTargetTypesMatch) {
|
|
96
|
-
return mergeOptions.cloneUnlessOtherwiseSpecified(source, mergeOptions);
|
|
97
|
-
}
|
|
98
|
-
else if (sourceIsArray) {
|
|
99
|
-
return mergeOptions.arrayMerge?.(target, source, mergeOptions);
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
return mergeObject(target, source, mergeOptions);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
function deepmergeAll(array, options) {
|
|
106
|
-
if (!Array.isArray(array)) {
|
|
107
|
-
throw new Error("first argument should be an array");
|
|
108
|
-
}
|
|
109
|
-
return array.reduce((prev, next) => {
|
|
110
|
-
return deepmerge(prev, next, options);
|
|
111
|
-
}, {});
|
|
112
|
-
}
|
|
113
|
-
deepmerge.all = deepmergeAll;
|
|
114
|
-
exports.default = deepmerge;
|
|
115
|
-
//# sourceMappingURL=deepmerge.helper.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});function isMergeableObject(e){return isNonNullObject(e)&&!isSpecial(e)}function isNonNullObject(e){return!!e&&typeof e=="object"}function isSpecial(e){const r=Object.prototype.toString.call(e);return r==="[object RegExp]"||r==="[object Date]"}function emptyTarget(e){return Array.isArray(e)?[]:{}}function getKeys(e){const r=Object.keys(e),n=getEnumerableOwnPropertySymbols(e);return[...r,...n]}function getEnumerableOwnPropertySymbols(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(r){return Object.propertyIsEnumerable.call(e,r)}):[]}function cloneUnlessOtherwiseSpecified(e,r){return r.clone!==!1&&r.isMergeableObject?.(e)?deepmerge(emptyTarget(e),e,r):e}function defaultArrayMerge(e,r,n){return e.concat(r).map(function(c){return n.cloneUnlessOtherwiseSpecified(c,n)})}function getMergeFunction(e,r){if(!r.customMerge)return deepmerge;const n=r.customMerge(e);return typeof n=="function"?n:deepmerge}function propertyIsOnObject(e,r){try{return r in e}catch{return!1}}function propertyIsUnsafe(e,r){return propertyIsOnObject(e,r)&&!(Object.hasOwnProperty.call(e,r)&&Object.propertyIsEnumerable.call(e,r))}function mergeObject(e,r,n){const c={};return n.isMergeableObject?.(e)&&getKeys(e).forEach(function(t){c[t]=n.cloneUnlessOtherwiseSpecified?n.cloneUnlessOtherwiseSpecified(e[t],n):e[t]}),getKeys(r).forEach(function(t){propertyIsUnsafe(e,t)||(propertyIsOnObject(e,t)&&n.isMergeableObject?.(r[t])?c[t]=getMergeFunction(t,n)(e[t],r[t],n):c[t]=n.cloneUnlessOtherwiseSpecified?n.cloneUnlessOtherwiseSpecified(r[t],n):r[t])}),c}function deepmerge(e,r,n){n=n||{};const c={arrayMerge:n.arrayMerge||defaultArrayMerge,isMergeableObject:n.isMergeableObject||isMergeableObject,cloneUnlessOtherwiseSpecified:n.cloneUnlessOtherwiseSpecified||cloneUnlessOtherwiseSpecified,clone:n.clone,customMerge:n.customMerge},t=Array.isArray(r),s=Array.isArray(e);return t===s?t?c.arrayMerge?.(e,r,c):mergeObject(e,r,c):c.cloneUnlessOtherwiseSpecified(r,c)}function deepmergeAll(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((n,c)=>deepmerge(n,c,r),{})}deepmerge.all=deepmergeAll,exports.default=deepmerge;
|