@squidcloud/local-backend 1.0.148 → 1.0.151

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.
Files changed (173) hide show
  1. package/dist/common/src/ai-assistant.types.d.ts +50 -50
  2. package/dist/common/src/ai-assistant.types.js +2 -2
  3. package/dist/common/src/ai-chatbot.context.d.ts +13 -13
  4. package/dist/common/src/ai-chatbot.context.js +19 -19
  5. package/dist/common/src/ai-chatbot.schemas.d.ts +18 -18
  6. package/dist/common/src/ai-chatbot.schemas.js +21 -21
  7. package/dist/common/src/ai-chatbot.types.d.ts +125 -123
  8. package/dist/common/src/ai-chatbot.types.js +18 -18
  9. package/dist/common/src/api-call.context.d.ts +13 -13
  10. package/dist/common/src/api-call.context.js +16 -16
  11. package/dist/common/src/api.types.d.ts +22 -22
  12. package/dist/common/src/api.types.js +2 -2
  13. package/dist/common/src/application.schemas.d.ts +1648 -1648
  14. package/dist/common/src/application.schemas.js +948 -948
  15. package/dist/common/src/application.types.d.ts +193 -193
  16. package/dist/common/src/application.types.js +89 -89
  17. package/dist/common/src/application.types.js.map +1 -1
  18. package/dist/common/src/backend-function.schemas.d.ts +3 -3
  19. package/dist/common/src/backend-function.schemas.js +11 -11
  20. package/dist/common/src/backend-function.types.d.ts +4 -4
  21. package/dist/common/src/backend-function.types.js +2 -2
  22. package/dist/common/src/backend-run.types.d.ts +54 -54
  23. package/dist/common/src/backend-run.types.js +92 -95
  24. package/dist/common/src/backend-run.types.js.map +1 -1
  25. package/dist/common/src/bundle-api.types.d.ts +65 -69
  26. package/dist/common/src/bundle-api.types.js +2 -2
  27. package/dist/common/src/bundle-data.types.d.ts +69 -74
  28. package/dist/common/src/bundle-data.types.js +2 -2
  29. package/dist/common/src/communication.types.d.ts +20 -19
  30. package/dist/common/src/communication.types.js +41 -40
  31. package/dist/common/src/communication.types.js.map +1 -1
  32. package/dist/common/src/context.types.d.ts +24 -24
  33. package/dist/common/src/context.types.js +2 -2
  34. package/dist/common/src/distributed-lock.context.d.ts +4 -4
  35. package/dist/common/src/distributed-lock.context.js +9 -9
  36. package/dist/common/src/document.types.d.ts +32 -32
  37. package/dist/common/src/document.types.js +50 -50
  38. package/dist/common/src/graphql.context.d.ts +14 -14
  39. package/dist/common/src/graphql.context.js +12 -12
  40. package/dist/common/src/graphql.types.d.ts +11 -11
  41. package/dist/common/src/graphql.types.js +34 -34
  42. package/dist/common/src/heartbeat.types.d.ts +4 -4
  43. package/dist/common/src/heartbeat.types.js +16 -16
  44. package/dist/common/src/http-status.enum.d.ts +50 -50
  45. package/dist/common/src/http-status.enum.js +54 -54
  46. package/dist/common/src/http-status.enum.js.map +1 -1
  47. package/dist/common/src/index.d.ts +54 -57
  48. package/dist/common/src/index.js +70 -73
  49. package/dist/common/src/index.js.map +1 -1
  50. package/dist/common/src/integrations/ai_chatbot.types.d.ts +31 -31
  51. package/dist/common/src/integrations/ai_chatbot.types.js +2 -2
  52. package/dist/common/src/integrations/api.types.d.ts +80 -80
  53. package/dist/common/src/integrations/api.types.js +2 -2
  54. package/dist/common/src/integrations/auth.types.d.ts +39 -39
  55. package/dist/common/src/integrations/auth.types.js +2 -2
  56. package/dist/common/src/integrations/database.types.d.ts +274 -274
  57. package/dist/common/src/integrations/database.types.js +2 -2
  58. package/dist/common/src/integrations/index.d.ts +134 -134
  59. package/dist/common/src/integrations/index.js +119 -119
  60. package/dist/common/src/integrations/index.js.map +1 -1
  61. package/dist/common/src/integrations/observability.types.d.ts +23 -23
  62. package/dist/common/src/integrations/observability.types.js +23 -23
  63. package/dist/common/src/logger.types.d.ts +21 -21
  64. package/dist/common/src/logger.types.js +11 -11
  65. package/dist/common/src/logger.types.js.map +1 -1
  66. package/dist/common/src/metrics.types.d.ts +73 -73
  67. package/dist/common/src/metrics.types.js +11 -11
  68. package/dist/common/src/mutation.context.d.ts +13 -13
  69. package/dist/common/src/mutation.context.js +26 -26
  70. package/dist/common/src/mutation.schemas.d.ts +5 -5
  71. package/dist/common/src/mutation.schemas.js +114 -114
  72. package/dist/common/src/mutation.types.d.ts +63 -63
  73. package/dist/common/src/mutation.types.js +142 -142
  74. package/dist/common/src/native-query.context.d.ts +7 -7
  75. package/dist/common/src/native-query.context.js +11 -11
  76. package/dist/common/src/native-query.types.d.ts +16 -16
  77. package/dist/common/src/native-query.types.js +2 -2
  78. package/dist/common/src/query/base-query-builder.d.ts +38 -38
  79. package/dist/common/src/query/base-query-builder.js +39 -39
  80. package/dist/common/src/query/index.d.ts +4 -4
  81. package/dist/common/src/query/index.js +20 -20
  82. package/dist/common/src/query/pagination.d.ts +46 -46
  83. package/dist/common/src/query/pagination.js +211 -211
  84. package/dist/common/src/query/query-context.d.ts +47 -47
  85. package/dist/common/src/query/query-context.js +159 -159
  86. package/dist/common/src/query/serialized-query.types.d.ts +24 -24
  87. package/dist/common/src/query/serialized-query.types.js +2 -2
  88. package/dist/common/src/query.types.d.ts +86 -86
  89. package/dist/common/src/query.types.js +97 -97
  90. package/dist/common/src/regions.d.ts +21 -21
  91. package/dist/common/src/regions.js +46 -46
  92. package/dist/common/src/schema/schema.types.d.ts +30 -30
  93. package/dist/common/src/schema/schema.types.js +173 -173
  94. package/dist/common/src/secret.schemas.d.ts +4 -4
  95. package/dist/common/src/secret.schemas.js +17 -17
  96. package/dist/common/src/secret.types.d.ts +68 -68
  97. package/dist/common/src/secret.types.js +5 -5
  98. package/dist/common/src/security.types.d.ts +3 -3
  99. package/dist/common/src/security.types.js +2 -2
  100. package/dist/common/src/socket.schemas.d.ts +3 -3
  101. package/dist/common/src/socket.schemas.js +57 -57
  102. package/dist/common/src/socket.types.d.ts +126 -126
  103. package/dist/common/src/socket.types.js +9 -9
  104. package/dist/common/src/socket.types.js.map +1 -1
  105. package/dist/common/src/time-units.d.ts +11 -11
  106. package/dist/common/src/time-units.js +14 -14
  107. package/dist/common/src/trigger.types.d.ts +15 -15
  108. package/dist/common/src/trigger.types.js +2 -2
  109. package/dist/common/src/types.d.ts +21 -21
  110. package/dist/common/src/types.js +2 -2
  111. package/dist/common/src/utils/array.d.ts +8 -8
  112. package/dist/common/src/utils/array.js +54 -54
  113. package/dist/common/src/utils/assert.d.ts +3 -3
  114. package/dist/common/src/utils/assert.js +14 -14
  115. package/dist/common/src/utils/error.d.ts +4 -4
  116. package/dist/common/src/utils/error.js +10 -10
  117. package/dist/common/src/utils/global.utils.d.ts +11 -11
  118. package/dist/common/src/utils/global.utils.js +50 -50
  119. package/dist/common/src/utils/http.d.ts +2 -2
  120. package/dist/common/src/utils/http.js +51 -51
  121. package/dist/common/src/utils/id.d.ts +2 -2
  122. package/dist/common/src/utils/id.js +21 -21
  123. package/dist/common/src/utils/lock.manager.d.ts +9 -9
  124. package/dist/common/src/utils/lock.manager.js +39 -39
  125. package/dist/common/src/utils/object.d.ts +5 -5
  126. package/dist/common/src/utils/object.js +75 -75
  127. package/dist/common/src/utils/serialization.d.ts +5 -5
  128. package/dist/common/src/utils/serialization.js +73 -73
  129. package/dist/common/src/utils/transforms.d.ts +18 -18
  130. package/dist/common/src/utils/transforms.js +104 -104
  131. package/dist/common/src/utils/url.d.ts +1 -1
  132. package/dist/common/src/utils/url.js +15 -15
  133. package/dist/common/src/utils/validation.d.ts +17 -17
  134. package/dist/common/src/utils/validation.js +199 -199
  135. package/dist/common/src/webhook-response.d.ts +6 -6
  136. package/dist/common/src/webhook-response.js +2 -2
  137. package/dist/common/src/websocket.impl.d.ts +21 -21
  138. package/dist/common/src/websocket.impl.js +79 -79
  139. package/dist/internal-common/src/code-executor.types.d.ts +13 -13
  140. package/dist/internal-common/src/code-executor.types.js +2 -2
  141. package/dist/internal-common/src/local-dev.types.d.ts +35 -35
  142. package/dist/internal-common/src/local-dev.types.js +2 -2
  143. package/dist/local-backend/package.json +48 -48
  144. package/dist/local-backend/src/index.d.ts +4 -4
  145. package/dist/local-backend/src/index.js +26 -26
  146. package/dist/local-backend/src/local-backend-socket.service.d.ts +18 -18
  147. package/dist/local-backend/src/local-backend-socket.service.js +107 -108
  148. package/dist/local-backend/src/local-backend-socket.service.js.map +1 -1
  149. package/dist/local-backend/src/local-backend.app.d.ts +2 -2
  150. package/dist/local-backend/src/local-backend.app.js +19 -19
  151. package/dist/local-backend/src/local-backend.controller.d.ts +8 -8
  152. package/dist/local-backend/src/local-backend.controller.js +48 -49
  153. package/dist/local-backend/src/local-backend.controller.js.map +1 -1
  154. package/dist/local-backend/src/local-backend.module.d.ts +8 -8
  155. package/dist/local-backend/src/local-backend.module.js +51 -53
  156. package/dist/local-backend/src/local-backend.module.js.map +1 -1
  157. package/dist/local-backend/src/local-backend.service.d.ts +15 -15
  158. package/dist/local-backend/src/local-backend.service.js +173 -176
  159. package/dist/local-backend/src/local-backend.service.js.map +1 -1
  160. package/dist/tsconfig.build.tsbuildinfo +1 -1
  161. package/package.json +1 -1
  162. package/dist/common/src/named-query.context.d.ts +0 -4
  163. package/dist/common/src/named-query.context.js +0 -10
  164. package/dist/common/src/named-query.context.js.map +0 -1
  165. package/dist/common/src/named-query.schemas.d.ts +0 -3
  166. package/dist/common/src/named-query.schemas.js +0 -14
  167. package/dist/common/src/named-query.schemas.js.map +0 -1
  168. package/dist/common/src/named-query.types.d.ts +0 -8
  169. package/dist/common/src/named-query.types.js +0 -3
  170. package/dist/common/src/named-query.types.js.map +0 -1
  171. package/dist/internal-common/src/utils/logger-utils.d.ts +0 -3
  172. package/dist/internal-common/src/utils/logger-utils.js +0 -29
  173. package/dist/internal-common/src/utils/logger-utils.js.map +0 -1
@@ -1,174 +1,174 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findMatchingPropertiesForKey = exports.validateSchema = exports.compileSchema = exports.SUPPORTED_FIELD_TYPES_ARRAY = void 0;
4
- const ajv_1 = require("ajv");
5
- const ajv_formats_1 = require("ajv-formats");
6
- const deep_diff_1 = require("deep-diff");
7
- const http_status_enum_1 = require("../http-status.enum");
8
- const validation_1 = require("../utils/validation");
9
- const assertic_1 = require("assertic");
10
- const ajv = new ajv_1.default({ allErrors: true, allowUnionTypes: false, useDefaults: false });
11
- (0, ajv_formats_1.default)(ajv);
12
- ajv.addKeyword({
13
- keyword: 'isDate',
14
- type: 'object',
15
- validate: (isDate, value) => {
16
- return isDate === value instanceof Date;
17
- },
18
- });
19
- ajv.addKeyword({
20
- keyword: 'isJSON',
21
- type: 'object',
22
- validate: (isJSON, value) => {
23
- try {
24
- const jsonString = JSON.stringify(value);
25
- JSON.parse(jsonString);
26
- return true;
27
- }
28
- catch (_a) {
29
- return false;
30
- }
31
- },
32
- });
33
- ajv.addKeyword({
34
- keyword: 'isComputed',
35
- validate: (isComputed, value) => {
36
- return isComputed ? value !== null : true;
37
- },
38
- });
39
- ajv.addKeyword({
40
- keyword: 'isDefaultComputed',
41
- validate: (isDefaultComputed, value) => {
42
- return isDefaultComputed ? value !== null : true;
43
- },
44
- });
45
- ajv.addKeyword({
46
- keyword: 'primaryKey',
47
- validate: (isPrimaryKey, value) => {
48
- return isPrimaryKey ? value !== null : true;
49
- },
50
- });
51
- ajv.addKeyword({
52
- keyword: 'insertable',
53
- validate: (insertable, value) => {
54
- return insertable ? value !== null : true;
55
- },
56
- });
57
- ajv.addKeyword({
58
- keyword: 'deletable',
59
- validate: (deletable, value) => {
60
- return deletable ? value !== null : true;
61
- },
62
- });
63
- ajv.addKeyword({
64
- keyword: 'applyDefaultValueOn',
65
- validate: (applyDefaultValueOn) => {
66
- return applyDefaultValueOn ? ['always', 'empty', 'updateOrEmpty'].includes(applyDefaultValueOn) : true;
67
- },
68
- });
69
- ajv.addKeyword({
70
- keyword: 'dataType',
71
- validate: () => {
72
- return true;
73
- },
74
- });
75
- exports.SUPPORTED_FIELD_TYPES_ARRAY = [
76
- 'string',
77
- 'integer',
78
- 'number',
79
- 'date',
80
- 'boolean',
81
- 'map',
82
- 'array',
83
- 'any',
84
- ];
85
- function compileSchema(schema) {
86
- return ajv.compile(schema);
87
- }
88
- exports.compileSchema = compileSchema;
89
- function validateSchema(schema, data, updatedPaths = [], dataBefore = {}) {
90
- const validator = compileSchema(schema);
91
- const isValid = validator(data);
92
- if (!updatedPaths.length && !isValid) {
93
- throw new validation_1.ValidationError(`The data does not conform with the collection schema.`, http_status_enum_1.HttpStatus.BAD_REQUEST, {
94
- errors: validator.errors,
95
- });
96
- }
97
- if (!isValid && updatedPaths.length) {
98
- for (const schemaError of (0, assertic_1.truthy)(validator.errors)) {
99
- let fieldPath = schemaError.instancePath;
100
- if (schemaError.params['missingProperty']) {
101
- fieldPath = `${fieldPath}/${schemaError.params['missingProperty']}`;
102
- }
103
- fieldPath = fieldPath.slice(1).replace(/\//g, '.') + '.';
104
- if (updatedPaths.some(updatedPath => fieldPath.startsWith(updatedPath + '.'))) {
105
- throw new validation_1.ValidationError(`${fieldPath} does not conform with the collection schema.`, http_status_enum_1.HttpStatus.BAD_REQUEST);
106
- }
107
- }
108
- }
109
- const diff = (0, assertic_1.truthy)((0, deep_diff_1.default)(dataBefore, data));
110
- validateRestrictedFieldsForDiff(diff, schema, !!updatedPaths.length);
111
- }
112
- exports.validateSchema = validateSchema;
113
- function validateRestrictedFieldsForDiff(diffs, schema, isUpdateMutation) {
114
- if ((isUpdateMutation && schema.readOnly) || (schema.insertable === false && !isUpdateMutation)) {
115
- throw new validation_1.ValidationError(`The schema does not allow this action`, http_status_enum_1.HttpStatus.BAD_REQUEST);
116
- }
117
- for (const diff of diffs) {
118
- const path = (0, assertic_1.truthy)(diff.path).join('.');
119
- const relevantProperties = getMatchingProperties((0, assertic_1.truthy)(diff.path), schema);
120
- for (const property of relevantProperties.exactMatch) {
121
- if (property.readOnly && diff.kind === 'E') {
122
- throw new validation_1.ValidationError(`${path} is readonly`, http_status_enum_1.HttpStatus.BAD_REQUEST);
123
- }
124
- if (isUpdateMutation && property.deletable === false && diff.kind === 'D') {
125
- throw new validation_1.ValidationError(`${path} is not deletable`, http_status_enum_1.HttpStatus.BAD_REQUEST);
126
- }
127
- if (property.insertable === false && diff.kind === 'N') {
128
- throw new validation_1.ValidationError(`${path} is not insertable`, http_status_enum_1.HttpStatus.BAD_REQUEST);
129
- }
130
- }
131
- for (const property of relevantProperties.parentsMatch) {
132
- if (isUpdateMutation && property.readOnly) {
133
- throw new validation_1.ValidationError(`${path} is readonly`, http_status_enum_1.HttpStatus.BAD_REQUEST);
134
- }
135
- }
136
- }
137
- }
138
- function getMatchingProperties(path, schema) {
139
- const result = {
140
- exactMatch: [],
141
- parentsMatch: [],
142
- };
143
- if (!path.length) {
144
- result.exactMatch.push(schema);
145
- return result;
146
- }
147
- result.parentsMatch.push(schema);
148
- const pathToUse = [...path];
149
- while (pathToUse.length) {
150
- const key = pathToUse.shift();
151
- (0, assertic_1.assertTruthy)(key !== undefined);
152
- const matchingPropertiesForKey = findMatchingPropertiesForKey(schema, key);
153
- for (const property of matchingPropertiesForKey) {
154
- const subMatchingProperties = getMatchingProperties(pathToUse, property);
155
- result.parentsMatch.push(...subMatchingProperties.parentsMatch);
156
- result.exactMatch.push(...subMatchingProperties.exactMatch);
157
- }
158
- }
159
- return result;
160
- }
161
- function findMatchingPropertiesForKey(schema, key) {
162
- var _a, _b;
163
- const matchingProperties = ((_a = schema.properties) === null || _a === void 0 ? void 0 : _a[key]) ? [(_b = schema.properties) === null || _b === void 0 ? void 0 : _b[key]] : [];
164
- if (schema.patternProperties) {
165
- matchingProperties.push(...Object.entries(schema.patternProperties)
166
- .filter(([pattern]) => {
167
- return new RegExp(pattern).test(key);
168
- })
169
- .map(([, matchedProperty]) => matchedProperty));
170
- }
171
- return matchingProperties;
172
- }
173
- exports.findMatchingPropertiesForKey = findMatchingPropertiesForKey;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findMatchingPropertiesForKey = exports.validateSchema = exports.compileSchema = exports.SUPPORTED_FIELD_TYPES_ARRAY = void 0;
4
+ const ajv_1 = require("ajv");
5
+ const ajv_formats_1 = require("ajv-formats");
6
+ const deep_diff_1 = require("deep-diff");
7
+ const http_status_enum_1 = require("../http-status.enum");
8
+ const validation_1 = require("../utils/validation");
9
+ const assertic_1 = require("assertic");
10
+ const ajv = new ajv_1.default({ allErrors: true, allowUnionTypes: false, useDefaults: false });
11
+ (0, ajv_formats_1.default)(ajv);
12
+ ajv.addKeyword({
13
+ keyword: 'isDate',
14
+ type: 'object',
15
+ validate: (isDate, value) => {
16
+ return isDate === value instanceof Date;
17
+ },
18
+ });
19
+ ajv.addKeyword({
20
+ keyword: 'isJSON',
21
+ type: 'object',
22
+ validate: (isJSON, value) => {
23
+ try {
24
+ const jsonString = JSON.stringify(value);
25
+ JSON.parse(jsonString);
26
+ return true;
27
+ }
28
+ catch (_a) {
29
+ return false;
30
+ }
31
+ },
32
+ });
33
+ ajv.addKeyword({
34
+ keyword: 'isComputed',
35
+ validate: (isComputed, value) => {
36
+ return isComputed ? value !== null : true;
37
+ },
38
+ });
39
+ ajv.addKeyword({
40
+ keyword: 'isDefaultComputed',
41
+ validate: (isDefaultComputed, value) => {
42
+ return isDefaultComputed ? value !== null : true;
43
+ },
44
+ });
45
+ ajv.addKeyword({
46
+ keyword: 'primaryKey',
47
+ validate: (isPrimaryKey, value) => {
48
+ return isPrimaryKey ? value !== null : true;
49
+ },
50
+ });
51
+ ajv.addKeyword({
52
+ keyword: 'insertable',
53
+ validate: (insertable, value) => {
54
+ return insertable ? value !== null : true;
55
+ },
56
+ });
57
+ ajv.addKeyword({
58
+ keyword: 'deletable',
59
+ validate: (deletable, value) => {
60
+ return deletable ? value !== null : true;
61
+ },
62
+ });
63
+ ajv.addKeyword({
64
+ keyword: 'applyDefaultValueOn',
65
+ validate: (applyDefaultValueOn) => {
66
+ return applyDefaultValueOn ? ['always', 'empty', 'updateOrEmpty'].includes(applyDefaultValueOn) : true;
67
+ },
68
+ });
69
+ ajv.addKeyword({
70
+ keyword: 'dataType',
71
+ validate: () => {
72
+ return true;
73
+ },
74
+ });
75
+ exports.SUPPORTED_FIELD_TYPES_ARRAY = [
76
+ 'string',
77
+ 'integer',
78
+ 'number',
79
+ 'date',
80
+ 'boolean',
81
+ 'map',
82
+ 'array',
83
+ 'any',
84
+ ];
85
+ function compileSchema(schema) {
86
+ return ajv.compile(schema);
87
+ }
88
+ exports.compileSchema = compileSchema;
89
+ function validateSchema(schema, data, updatedPaths = [], dataBefore = {}) {
90
+ const validator = compileSchema(schema);
91
+ const isValid = validator(data);
92
+ if (!updatedPaths.length && !isValid) {
93
+ throw new validation_1.ValidationError(`The data does not conform with the collection schema.`, http_status_enum_1.HttpStatus.BAD_REQUEST, {
94
+ errors: validator.errors,
95
+ });
96
+ }
97
+ if (!isValid && updatedPaths.length) {
98
+ for (const schemaError of (0, assertic_1.truthy)(validator.errors)) {
99
+ let fieldPath = schemaError.instancePath;
100
+ if (schemaError.params['missingProperty']) {
101
+ fieldPath = `${fieldPath}/${schemaError.params['missingProperty']}`;
102
+ }
103
+ fieldPath = fieldPath.slice(1).replace(/\//g, '.') + '.';
104
+ if (updatedPaths.some(updatedPath => fieldPath.startsWith(updatedPath + '.'))) {
105
+ throw new validation_1.ValidationError(`${fieldPath} does not conform with the collection schema.`, http_status_enum_1.HttpStatus.BAD_REQUEST);
106
+ }
107
+ }
108
+ }
109
+ const diff = (0, assertic_1.truthy)((0, deep_diff_1.default)(dataBefore, data));
110
+ validateRestrictedFieldsForDiff(diff, schema, !!updatedPaths.length);
111
+ }
112
+ exports.validateSchema = validateSchema;
113
+ function validateRestrictedFieldsForDiff(diffs, schema, isUpdateMutation) {
114
+ if ((isUpdateMutation && schema.readOnly) || (schema.insertable === false && !isUpdateMutation)) {
115
+ throw new validation_1.ValidationError(`The schema does not allow this action`, http_status_enum_1.HttpStatus.BAD_REQUEST);
116
+ }
117
+ for (const diff of diffs) {
118
+ const path = (0, assertic_1.truthy)(diff.path).join('.');
119
+ const relevantProperties = getMatchingProperties((0, assertic_1.truthy)(diff.path), schema);
120
+ for (const property of relevantProperties.exactMatch) {
121
+ if (property.readOnly && diff.kind === 'E') {
122
+ throw new validation_1.ValidationError(`${path} is readonly`, http_status_enum_1.HttpStatus.BAD_REQUEST);
123
+ }
124
+ if (isUpdateMutation && property.deletable === false && diff.kind === 'D') {
125
+ throw new validation_1.ValidationError(`${path} is not deletable`, http_status_enum_1.HttpStatus.BAD_REQUEST);
126
+ }
127
+ if (property.insertable === false && diff.kind === 'N') {
128
+ throw new validation_1.ValidationError(`${path} is not insertable`, http_status_enum_1.HttpStatus.BAD_REQUEST);
129
+ }
130
+ }
131
+ for (const property of relevantProperties.parentsMatch) {
132
+ if (isUpdateMutation && property.readOnly) {
133
+ throw new validation_1.ValidationError(`${path} is readonly`, http_status_enum_1.HttpStatus.BAD_REQUEST);
134
+ }
135
+ }
136
+ }
137
+ }
138
+ function getMatchingProperties(path, schema) {
139
+ const result = {
140
+ exactMatch: [],
141
+ parentsMatch: [],
142
+ };
143
+ if (!path.length) {
144
+ result.exactMatch.push(schema);
145
+ return result;
146
+ }
147
+ result.parentsMatch.push(schema);
148
+ const pathToUse = [...path];
149
+ while (pathToUse.length) {
150
+ const key = pathToUse.shift();
151
+ (0, assertic_1.assertTruthy)(key !== undefined);
152
+ const matchingPropertiesForKey = findMatchingPropertiesForKey(schema, key);
153
+ for (const property of matchingPropertiesForKey) {
154
+ const subMatchingProperties = getMatchingProperties(pathToUse, property);
155
+ result.parentsMatch.push(...subMatchingProperties.parentsMatch);
156
+ result.exactMatch.push(...subMatchingProperties.exactMatch);
157
+ }
158
+ }
159
+ return result;
160
+ }
161
+ function findMatchingPropertiesForKey(schema, key) {
162
+ var _a, _b;
163
+ const matchingProperties = ((_a = schema.properties) === null || _a === void 0 ? void 0 : _a[key]) ? [(_b = schema.properties) === null || _b === void 0 ? void 0 : _b[key]] : [];
164
+ if (schema.patternProperties) {
165
+ matchingProperties.push(...Object.entries(schema.patternProperties)
166
+ .filter(([pattern]) => {
167
+ return new RegExp(pattern).test(key);
168
+ })
169
+ .map(([, matchedProperty]) => matchedProperty));
170
+ }
171
+ return matchingProperties;
172
+ }
173
+ exports.findMatchingPropertiesForKey = findMatchingPropertiesForKey;
174
174
  //# sourceMappingURL=schema.types.js.map
@@ -1,4 +1,4 @@
1
- import { JSONSchemaType } from 'ajv';
2
- import { DeleteApiKeyRequest, GenerateNewApiKeyRequest } from './secret.types';
3
- export declare const DeleteApiKeyRequestSchema: JSONSchemaType<DeleteApiKeyRequest>;
4
- export declare const GenerateNewApiKeyRequestSchema: JSONSchemaType<GenerateNewApiKeyRequest>;
1
+ import { JSONSchemaType } from 'ajv';
2
+ import { DeleteApiKeyRequest, GenerateNewApiKeyRequest } from './secret.types';
3
+ export declare const DeleteApiKeyRequestSchema: JSONSchemaType<DeleteApiKeyRequest>;
4
+ export declare const GenerateNewApiKeyRequestSchema: JSONSchemaType<GenerateNewApiKeyRequest>;
@@ -1,18 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GenerateNewApiKeyRequestSchema = exports.DeleteApiKeyRequestSchema = void 0;
4
- exports.DeleteApiKeyRequestSchema = {
5
- type: 'object',
6
- required: ['key'],
7
- properties: {
8
- key: { type: 'string', pattern: '[a-zA-Z0-9-_]+', nullable: false, isSecret: { collection: 'apiKeys' } },
9
- },
10
- };
11
- exports.GenerateNewApiKeyRequestSchema = {
12
- type: 'object',
13
- required: ['key'],
14
- properties: {
15
- key: { type: 'string', pattern: '[a-zA-Z0-9-_]+', nullable: false, isSecret: {} },
16
- },
17
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GenerateNewApiKeyRequestSchema = exports.DeleteApiKeyRequestSchema = void 0;
4
+ exports.DeleteApiKeyRequestSchema = {
5
+ type: 'object',
6
+ required: ['key'],
7
+ properties: {
8
+ key: { type: 'string', pattern: '[a-zA-Z0-9-_]+', nullable: false, isSecret: { collection: 'apiKeys' } },
9
+ },
10
+ };
11
+ exports.GenerateNewApiKeyRequestSchema = {
12
+ type: 'object',
13
+ required: ['key'],
14
+ properties: {
15
+ key: { type: 'string', pattern: '[a-zA-Z0-9-_]+', nullable: false, isSecret: {} },
16
+ },
17
+ };
18
18
  //# sourceMappingURL=secret.schemas.js.map
@@ -1,68 +1,68 @@
1
- export type SecretKey = string;
2
- export type SecretValue = string | number | boolean;
3
- export type SecretTimestamp = number;
4
- export type ApiKeyName = string;
5
- export type ApiKey = string;
6
- export type SetSecretEntry = {
7
- key: SecretKey;
8
- value?: SecretValue;
9
- };
10
- export declare const BACKEND_API_KEY = "_BACKEND_API_KEY";
11
- export declare const APP_API_KEY = "APP_API_KEY";
12
- export interface ApplicationSecrets {
13
- custom: Record<SecretKey, SecretEntry>;
14
- apiKeys: Record<SecretKey, ApiKeyEntry>;
15
- }
16
- export interface SystemSecrets {
17
- sharedMongo: {
18
- password: string;
19
- };
20
- datadog: {
21
- appKey: string;
22
- apiKey: string;
23
- };
24
- openai: {
25
- apiKey: string;
26
- };
27
- anthropic: {
28
- apiKey: string;
29
- };
30
- pinecone: {
31
- apiKey: string;
32
- };
33
- }
34
- export interface SecretMetadata {
35
- key: SecretKey;
36
- lastUpdated: SecretTimestamp;
37
- }
38
- export interface SecretEntry<T extends SecretValue = SecretValue> extends SecretMetadata {
39
- value: T;
40
- }
41
- export interface ApiKeyEntry extends SecretMetadata {
42
- value: string;
43
- }
44
- export interface SetSecretRequest {
45
- entries: Array<SetSecretRequestEntry>;
46
- }
47
- export interface SetSecretRequestEntry {
48
- key: SecretKey;
49
- value: SecretValue;
50
- }
51
- export interface DeleteSecretRequest {
52
- keys: Array<SecretKey>;
53
- }
54
- export interface GetCustomSecretRequest {
55
- key: SecretKey;
56
- }
57
- export interface GetApiKeyRequest {
58
- key: SecretKey;
59
- }
60
- export type DeleteApiKeyRequest = Pick<SecretMetadata, 'key'>;
61
- export interface ListApplicationSecretMetadataResponse {
62
- custom: SecretMetadata[];
63
- apiKeys: SecretMetadata[];
64
- }
65
- export type GenerateNewApiKeyRequest = Pick<SecretMetadata, 'key'>;
66
- export interface GenerateNewApiKeyResponse {
67
- apiKey: string;
68
- }
1
+ export type SecretKey = string;
2
+ export type SecretValue = string | number | boolean;
3
+ export type SecretTimestamp = number;
4
+ export type ApiKeyName = string;
5
+ export type ApiKey = string;
6
+ export type SetSecretEntry = {
7
+ key: SecretKey;
8
+ value?: SecretValue;
9
+ };
10
+ export declare const BACKEND_API_KEY = "_BACKEND_API_KEY";
11
+ export declare const APP_API_KEY = "APP_API_KEY";
12
+ export interface ApplicationSecrets {
13
+ custom: Record<SecretKey, SecretEntry>;
14
+ apiKeys: Record<SecretKey, ApiKeyEntry>;
15
+ }
16
+ export interface SystemSecrets {
17
+ sharedMongo: {
18
+ password: string;
19
+ };
20
+ datadog: {
21
+ appKey: string;
22
+ apiKey: string;
23
+ };
24
+ openai: {
25
+ apiKey: string;
26
+ };
27
+ anthropic: {
28
+ apiKey: string;
29
+ };
30
+ pinecone: {
31
+ apiKey: string;
32
+ };
33
+ }
34
+ export interface SecretMetadata {
35
+ key: SecretKey;
36
+ lastUpdated: SecretTimestamp;
37
+ }
38
+ export interface SecretEntry<T extends SecretValue = SecretValue> extends SecretMetadata {
39
+ value: T;
40
+ }
41
+ export interface ApiKeyEntry extends SecretMetadata {
42
+ value: string;
43
+ }
44
+ export interface SetSecretRequest {
45
+ entries: Array<SetSecretRequestEntry>;
46
+ }
47
+ export interface SetSecretRequestEntry {
48
+ key: SecretKey;
49
+ value: SecretValue;
50
+ }
51
+ export interface DeleteSecretRequest {
52
+ keys: Array<SecretKey>;
53
+ }
54
+ export interface GetCustomSecretRequest {
55
+ key: SecretKey;
56
+ }
57
+ export interface GetApiKeyRequest {
58
+ key: SecretKey;
59
+ }
60
+ export type DeleteApiKeyRequest = Pick<SecretMetadata, 'key'>;
61
+ export interface ListApplicationSecretMetadataResponse {
62
+ custom: SecretMetadata[];
63
+ apiKeys: SecretMetadata[];
64
+ }
65
+ export type GenerateNewApiKeyRequest = Pick<SecretMetadata, 'key'>;
66
+ export interface GenerateNewApiKeyResponse {
67
+ apiKey: string;
68
+ }
@@ -1,6 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.APP_API_KEY = exports.BACKEND_API_KEY = void 0;
4
- exports.BACKEND_API_KEY = '_BACKEND_API_KEY';
5
- exports.APP_API_KEY = 'APP_API_KEY';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APP_API_KEY = exports.BACKEND_API_KEY = void 0;
4
+ exports.BACKEND_API_KEY = '_BACKEND_API_KEY';
5
+ exports.APP_API_KEY = 'APP_API_KEY';
6
6
  //# sourceMappingURL=secret.types.js.map
@@ -1,3 +1,3 @@
1
- export interface SecureNamedQueryRequest {
2
- params: Record<string, any>;
3
- }
1
+ export interface SecureNamedQueryRequest {
2
+ params: Record<string, any>;
3
+ }
@@ -1,3 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  //# sourceMappingURL=security.types.js.map
@@ -1,3 +1,3 @@
1
- import { JSONSchemaType } from 'ajv';
2
- import { MessageFromClient } from './socket.types';
3
- export declare const MessageFromClientSchema: JSONSchemaType<MessageFromClient>;
1
+ import { JSONSchemaType } from 'ajv';
2
+ import { MessageFromClient } from './socket.types';
3
+ export declare const MessageFromClientSchema: JSONSchemaType<MessageFromClient>;