@oneuptime/common 11.0.0 → 11.0.1

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.
@@ -0,0 +1,257 @@
1
+ import BaseModel from "../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
2
+ import TableColumnType from "../Types/Database/TableColumnType";
3
+ import OneUptimeDate from "../Types/Date";
4
+ import Recurring from "../Types/Events/Recurring";
5
+ import BadDataException from "../Types/Exception/BadDataException";
6
+ export const MODEL_EXPORT_FILE_TYPE = "oneuptime-resource-export";
7
+ export const MODEL_EXPORT_SCHEMA_VERSION = 1;
8
+ /*
9
+ * Columns that are always server-managed and must never be exported or
10
+ * imported, regardless of model metadata.
11
+ */
12
+ const SYSTEM_COLUMNS = [
13
+ "_id",
14
+ "createdAt",
15
+ "updatedAt",
16
+ "deletedAt",
17
+ "version",
18
+ ];
19
+ /*
20
+ * Column types that never make sense in an export file: relations to other
21
+ * entities (their ids would not resolve in another project or instance),
22
+ * binary data, and secrets.
23
+ */
24
+ const EXCLUDED_COLUMN_TYPES = [
25
+ TableColumnType.Entity,
26
+ TableColumnType.EntityArray,
27
+ TableColumnType.File,
28
+ TableColumnType.Buffer,
29
+ TableColumnType.Slug,
30
+ TableColumnType.HashedString,
31
+ TableColumnType.Password,
32
+ TableColumnType.OTP,
33
+ ];
34
+ /*
35
+ * Columns that pass the generic metadata filters but must still never be
36
+ * exported: plain-text credentials and server-managed runtime state that
37
+ * would either leak secrets into export files or seed imported resources
38
+ * with stale state from the source resource.
39
+ */
40
+ const EXCLUDED_COLUMNS_BY_TABLE = {
41
+ StatusPage: ["embeddedOverallStatusToken"],
42
+ Monitor: [
43
+ "incomingMonitorRequest",
44
+ "serverMonitorResponse",
45
+ "incomingRequestMonitorHeartbeatCheckedAt",
46
+ "serverMonitorRequestReceivedAt",
47
+ "telemetryMonitorNextMonitorAt",
48
+ "telemetryMonitorLastMonitorAt",
49
+ ],
50
+ };
51
+ export default class ModelImportExport {
52
+ /*
53
+ * Derives the list of columns that can safely round-trip through an export
54
+ * file from the model's own metadata. A column qualifies when the current
55
+ * caller could both read it and set it on create, it is not computed or
56
+ * server-generated, it holds no secret, and it does not reference another
57
+ * entity (foreign keys of Entity relations are excluded along with the
58
+ * relations themselves).
59
+ */
60
+ static getImportExportableColumnNames(modelType) {
61
+ const model = new modelType();
62
+ const tenantColumn = model.getTenantColumn();
63
+ const foreignKeyColumns = [];
64
+ for (const columnName of model.getTableColumns().columns) {
65
+ const metadata = model.getTableColumnMetadata(columnName);
66
+ if (metadata === null || metadata === void 0 ? void 0 : metadata.manyToOneRelationColumn) {
67
+ foreignKeyColumns.push(metadata.manyToOneRelationColumn);
68
+ }
69
+ }
70
+ const excludedColumnsForTable = EXCLUDED_COLUMNS_BY_TABLE[model.tableName || ""] || [];
71
+ const exportableColumns = [];
72
+ for (const columnName of model.getTableColumns().columns) {
73
+ if (SYSTEM_COLUMNS.includes(columnName)) {
74
+ continue;
75
+ }
76
+ if (excludedColumnsForTable.includes(columnName)) {
77
+ continue;
78
+ }
79
+ if (tenantColumn && columnName === tenantColumn) {
80
+ continue;
81
+ }
82
+ if (foreignKeyColumns.includes(columnName)) {
83
+ continue;
84
+ }
85
+ const metadata = model.getTableColumnMetadata(columnName);
86
+ if (!metadata) {
87
+ continue;
88
+ }
89
+ if (EXCLUDED_COLUMN_TYPES.includes(metadata.type)) {
90
+ continue;
91
+ }
92
+ if (metadata.computed || metadata.hashed || metadata.encrypted) {
93
+ continue;
94
+ }
95
+ if (metadata.forceGetDefaultValueOnCreate) {
96
+ continue;
97
+ }
98
+ const accessControl = model.getColumnAccessControlFor(columnName);
99
+ if (!accessControl ||
100
+ accessControl.read.length === 0 ||
101
+ accessControl.create.length === 0) {
102
+ continue;
103
+ }
104
+ exportableColumns.push(columnName);
105
+ }
106
+ return exportableColumns;
107
+ }
108
+ static getImportExportSelect(modelType) {
109
+ const select = {};
110
+ for (const columnName of this.getImportExportableColumnNames(modelType)) {
111
+ select[columnName] = true;
112
+ }
113
+ return select;
114
+ }
115
+ static toExportJSON(item, modelType) {
116
+ const json = BaseModel.toJSON(item, modelType);
117
+ const exportableColumns = this.getImportExportableColumnNames(modelType);
118
+ const exportJson = {};
119
+ for (const key of Object.keys(json)) {
120
+ if (exportableColumns.includes(key)) {
121
+ exportJson[key] = json[key];
122
+ }
123
+ }
124
+ return exportJson;
125
+ }
126
+ static buildExportEnvelope(data) {
127
+ const model = new data.modelType();
128
+ return {
129
+ fileType: MODEL_EXPORT_FILE_TYPE,
130
+ schemaVersion: MODEL_EXPORT_SCHEMA_VERSION,
131
+ resourceType: model.tableName || "",
132
+ exportedAt: data.exportedAt.toISOString(),
133
+ items: data.items.map((item) => {
134
+ return this.toExportJSON(item, data.modelType);
135
+ }),
136
+ };
137
+ }
138
+ /*
139
+ * Accepts an export envelope, a plain array of items, or a single item
140
+ * object, and returns the list of item JSONs to import. Throws
141
+ * BadDataException with a user-facing message when the payload is not
142
+ * usable for this model type.
143
+ */
144
+ static parseImportPayload(data) {
145
+ const model = new data.modelType();
146
+ const resourceName = model.singularName || "resource";
147
+ let items = null;
148
+ if (Array.isArray(data.payload)) {
149
+ items = data.payload;
150
+ }
151
+ else if (data.payload && typeof data.payload === "object") {
152
+ if (Array.isArray(data.payload["items"])) {
153
+ const resourceType = data.payload["resourceType"];
154
+ if (resourceType &&
155
+ model.tableName &&
156
+ resourceType !== model.tableName) {
157
+ throw new BadDataException(`This file contains ${resourceType.toString()} resources and cannot be imported here. Please select a ${resourceName} export file.`);
158
+ }
159
+ items = data.payload["items"];
160
+ }
161
+ else {
162
+ // a single item object exported by hand.
163
+ items = [data.payload];
164
+ }
165
+ }
166
+ if (!items) {
167
+ throw new BadDataException(`This file is not a valid ${resourceName} export file.`);
168
+ }
169
+ if (items.length === 0) {
170
+ throw new BadDataException(`This file does not contain any ${resourceName} to import.`);
171
+ }
172
+ for (const item of items) {
173
+ if (!item || typeof item !== "object" || Array.isArray(item)) {
174
+ throw new BadDataException(`This file is not a valid ${resourceName} export file.`);
175
+ }
176
+ }
177
+ return items;
178
+ }
179
+ /*
180
+ * Builds a model instance from an import item, keeping only columns that
181
+ * are importable for this model. Anything else in the file - ids, slugs,
182
+ * timestamps, relations, unknown keys - is dropped so the server create
183
+ * API treats the item as a brand new resource.
184
+ */
185
+ static fromImportJSON(data) {
186
+ const item = BaseModel.fromJSON(data.json, data.modelType);
187
+ const exportableColumns = this.getImportExportableColumnNames(data.modelType);
188
+ for (const columnName of item.getTableColumns().columns) {
189
+ if (exportableColumns.includes(columnName)) {
190
+ continue;
191
+ }
192
+ if (item[columnName] !== undefined) {
193
+ item.removeValue(columnName);
194
+ }
195
+ }
196
+ this.normalizeImportItem(item);
197
+ return item;
198
+ }
199
+ /*
200
+ * Model-specific fixups so imported items pass server-side create
201
+ * validation. Currently: recurring scheduled maintenance templates are
202
+ * rejected on create when their first-event dates are in the past (the
203
+ * normal case for an export taken from an established template), so the
204
+ * dates are advanced by the recurrence interval until they are in the
205
+ * future, preserving the offsets between them.
206
+ */
207
+ static normalizeImportItem(item) {
208
+ if (item.tableName !== "ScheduledMaintenanceTemplate") {
209
+ return;
210
+ }
211
+ const isRecurringEvent = item.getValue("isRecurringEvent");
212
+ const recurringInterval = item.getValue("recurringInterval");
213
+ if (!isRecurringEvent || !recurringInterval) {
214
+ return;
215
+ }
216
+ const dateColumns = [
217
+ "firstEventScheduledAt",
218
+ "firstEventStartsAt",
219
+ "firstEventEndsAt",
220
+ ];
221
+ const dates = [];
222
+ for (const dateColumn of dateColumns) {
223
+ const value = item.getValue(dateColumn);
224
+ if (value instanceof Date) {
225
+ dates.push(value);
226
+ }
227
+ }
228
+ if (dates.length === 0) {
229
+ return;
230
+ }
231
+ /*
232
+ * Anchor the advance on the earliest date so every date ends up in the
233
+ * future once shifted by the same amount.
234
+ */
235
+ const earliestDate = dates.reduce((a, b) => {
236
+ return a.getTime() <= b.getTime() ? a : b;
237
+ });
238
+ if (OneUptimeDate.isInTheFuture(earliestDate)) {
239
+ return;
240
+ }
241
+ const interval = recurringInterval instanceof Recurring
242
+ ? recurringInterval
243
+ : Recurring.fromJSON(recurringInterval);
244
+ const nextEarliestDate = Recurring.getNextDate(earliestDate, interval);
245
+ const advanceByMs = nextEarliestDate.getTime() - earliestDate.getTime();
246
+ if (advanceByMs <= 0) {
247
+ return;
248
+ }
249
+ for (const dateColumn of dateColumns) {
250
+ const value = item.getValue(dateColumn);
251
+ if (value instanceof Date) {
252
+ item[dateColumn] = new Date(value.getTime() + advanceByMs);
253
+ }
254
+ }
255
+ }
256
+ }
257
+ //# sourceMappingURL=ModelImportExport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelImportExport.js","sourceRoot":"","sources":["../../../Utils/ModelImportExport.ts"],"names":[],"mappings":"AAAA,OAAO,SAEN,MAAM,8DAA8D,CAAC;AAItE,OAAO,eAAe,MAAM,mCAAmC,CAAC;AAChE,OAAO,aAAa,MAAM,eAAe,CAAC;AAE1C,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAClD,OAAO,gBAAgB,MAAM,qCAAqC,CAAC;AAGnE,MAAM,CAAC,MAAM,sBAAsB,GAAW,2BAA2B,CAAC;AAC1E,MAAM,CAAC,MAAM,2BAA2B,GAAW,CAAC,CAAC;AAErD;;;GAGG;AACH,MAAM,cAAc,GAAkB;IACpC,KAAK;IACL,WAAW;IACX,WAAW;IACX,WAAW;IACX,SAAS;CACV,CAAC;AAEF;;;;GAIG;AACH,MAAM,qBAAqB,GAA2B;IACpD,eAAe,CAAC,MAAM;IACtB,eAAe,CAAC,WAAW;IAC3B,eAAe,CAAC,IAAI;IACpB,eAAe,CAAC,MAAM;IACtB,eAAe,CAAC,IAAI;IACpB,eAAe,CAAC,YAAY;IAC5B,eAAe,CAAC,QAAQ;IACxB,eAAe,CAAC,GAAG;CACpB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,yBAAyB,GAA8B;IAC3D,UAAU,EAAE,CAAC,4BAA4B,CAAC;IAC1C,OAAO,EAAE;QACP,wBAAwB;QACxB,uBAAuB;QACvB,0CAA0C;QAC1C,gCAAgC;QAChC,+BAA+B;QAC/B,+BAA+B;KAChC;CACF,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC;;;;;;;OAOG;IACI,MAAM,CAAC,8BAA8B,CAC1C,SAAgC;QAEhC,MAAM,KAAK,GAAc,IAAI,SAAS,EAAE,CAAC;QAEzC,MAAM,YAAY,GAAkB,KAAK,CAAC,eAAe,EAAE,CAAC;QAE5D,MAAM,iBAAiB,GAAkB,EAAE,CAAC;QAE5C,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;YACzD,MAAM,QAAQ,GACZ,KAAK,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAE3C,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,uBAAuB,EAAE,CAAC;gBACtC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,MAAM,uBAAuB,GAC3B,yBAAyB,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAEzD,MAAM,iBAAiB,GAAkB,EAAE,CAAC;QAE5C,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;YACzD,IAAI,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YAED,IAAI,uBAAuB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjD,SAAS;YACX,CAAC;YAED,IAAI,YAAY,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;gBAChD,SAAS;YACX,CAAC;YAED,IAAI,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GACZ,KAAK,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAE3C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,SAAS;YACX,CAAC;YAED,IAAI,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,SAAS;YACX,CAAC;YAED,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBAC/D,SAAS;YACX,CAAC;YAED,IAAI,QAAQ,CAAC,4BAA4B,EAAE,CAAC;gBAC1C,SAAS;YACX,CAAC;YAED,MAAM,aAAa,GACjB,KAAK,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;YAE9C,IACE,CAAC,aAAa;gBACd,aAAa,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAC/B,aAAa,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EACjC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAA+B,SAEjE;QACC,MAAM,MAAM,GAAe,EAAE,CAAC;QAE9B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC,EAAE,CAAC;YACxE,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,OAAO,MAA4B,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,YAAY,CACxB,IAAgB,EAChB,SAAiC;QAEjC,MAAM,IAAI,GAAe,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE3D,MAAM,iBAAiB,GACrB,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAe,EAAE,CAAC;QAElC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAA+B,IAI/D;QACC,MAAM,KAAK,GAAc,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAE9C,OAAO;YACL,QAAQ,EAAE,sBAAsB;YAChC,aAAa,EAAE,2BAA2B;YAC1C,YAAY,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YACzC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAgB,EAAE,EAAE;gBACzC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACjD,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,kBAAkB,CAAC,IAGhC;QACC,MAAM,KAAK,GAAc,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAW,KAAK,CAAC,YAAY,IAAI,UAAU,CAAC;QAE9D,IAAI,KAAK,GAAqB,IAAI,CAAC;QAEnC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBACzC,MAAM,YAAY,GAAY,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAE3D,IACE,YAAY;oBACZ,KAAK,CAAC,SAAS;oBACf,YAAY,KAAK,KAAK,CAAC,SAAS,EAChC,CAAC;oBACD,MAAM,IAAI,gBAAgB,CACxB,sBAAsB,YAAY,CAAC,QAAQ,EAAE,2DAA2D,YAAY,eAAe,CACpI,CAAC;gBACJ,CAAC;gBAED,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAc,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,yCAAyC;gBACzC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,gBAAgB,CACxB,4BAA4B,YAAY,eAAe,CACxD,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,gBAAgB,CACxB,kCAAkC,YAAY,aAAa,CAC5D,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7D,MAAM,IAAI,gBAAgB,CACxB,4BAA4B,YAAY,eAAe,CACxD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,KAA0B,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,cAAc,CAA+B,IAG1D;QACC,MAAM,IAAI,GAAe,SAAS,CAAC,QAAQ,CACzC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,CACD,CAAC;QAEhB,MAAM,iBAAiB,GACrB,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;YACxD,IAAI,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,IAAK,IAAY,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,mBAAmB,CAAC,IAAe;QAChD,IAAI,IAAI,CAAC,SAAS,KAAK,8BAA8B,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAY,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACpE,MAAM,iBAAiB,GAAY,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAEtE,IAAI,CAAC,gBAAgB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAkB;YACjC,uBAAuB;YACvB,oBAAoB;YACpB,kBAAkB;SACnB,CAAC;QAEF,MAAM,KAAK,GAAgB,EAAE,CAAC;QAE9B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,KAAK,GAAY,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAEjD,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED;;;WAGG;QACH,MAAM,YAAY,GAAS,KAAK,CAAC,MAAM,CAAC,CAAC,CAAO,EAAE,CAAO,EAAE,EAAE;YAC3D,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,IAAI,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GACZ,iBAAiB,YAAY,SAAS;YACpC,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAA+B,CAAC,CAAC;QAE1D,MAAM,gBAAgB,GAAS,SAAS,CAAC,WAAW,CAClD,YAAY,EACZ,QAAQ,CACT,CAAC;QAEF,MAAM,WAAW,GACf,gBAAgB,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QAEtD,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,KAAK,GAAY,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAEjD,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBACzB,IAAY,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneuptime/common",
3
- "version": "11.0.0",
3
+ "version": "11.0.1",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",