@digital-alchemy/core 0.1.5 → 0.1.7
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/boilerplate/extensions/cache.extension.spec.d.ts +6 -0
- package/dist/boilerplate/extensions/cache.extension.spec.js +222 -0
- package/dist/boilerplate/extensions/cache.extension.spec.js.map +1 -0
- package/dist/boilerplate/extensions/configuration.extension.d.ts +1 -1
- package/dist/boilerplate/extensions/configuration.extension.js +3 -0
- package/dist/boilerplate/extensions/configuration.extension.js.map +1 -1
- package/dist/boilerplate/extensions/fetch.extension.js +1 -1
- package/dist/boilerplate/extensions/fetch.extension.js.map +1 -1
- package/dist/boilerplate/extensions/fetch.extension.spec.d.ts +8 -0
- package/dist/boilerplate/extensions/fetch.extension.spec.js +59 -0
- package/dist/boilerplate/extensions/fetch.extension.spec.js.map +1 -0
- package/dist/boilerplate/extensions/logger.extension.js +8 -1
- package/dist/boilerplate/extensions/logger.extension.js.map +1 -1
- package/dist/boilerplate/extensions/wiring.extension.js +20 -7
- package/dist/boilerplate/extensions/wiring.extension.js.map +1 -1
- package/dist/boilerplate/extensions/wiring.extension.spec.d.ts +8 -0
- package/dist/boilerplate/extensions/wiring.extension.spec.js +215 -0
- package/dist/boilerplate/extensions/wiring.extension.spec.js.map +1 -0
- package/dist/boilerplate/helpers/config-environment-loader.helper.d.ts +1 -1
- package/dist/boilerplate/helpers/config-environment-loader.helper.js +3 -1
- package/dist/boilerplate/helpers/config-environment-loader.helper.js.map +1 -1
- package/dist/boilerplate/helpers/config-file-loader.helper.d.ts +1 -1
- package/dist/boilerplate/helpers/config-file-loader.helper.js +6 -5
- package/dist/boilerplate/helpers/config-file-loader.helper.js.map +1 -1
- package/dist/boilerplate/helpers/config.helper.d.ts +2 -0
- package/dist/boilerplate/helpers/config.helper.js.map +1 -1
- package/dist/boilerplate/helpers/errors.helper.d.ts +1 -15
- package/dist/boilerplate/helpers/errors.helper.js +12 -40
- package/dist/boilerplate/helpers/errors.helper.js.map +1 -1
- package/dist/boilerplate/helpers/wiring.helper.d.ts +2 -2
- package/dist/gotify/extensions/fetch.extension.spec.d.ts +1 -0
- package/dist/gotify/extensions/fetch.extension.spec.js +284 -0
- package/dist/gotify/extensions/fetch.extension.spec.js.map +1 -0
- package/dist/purge/main.d.ts +34 -0
- package/dist/purge/main.js +50 -0
- package/dist/purge/main.js.map +1 -0
- package/dist/purge/purge.extension.d.ts +2 -0
- package/dist/purge/purge.extension.js +49 -0
- package/dist/purge/purge.extension.js.map +1 -0
- package/dist/synapse/extensions/registry.extension.js +29 -12
- package/dist/synapse/extensions/registry.extension.js.map +1 -1
- package/dist/utilities/extensions/is.extension.d.ts +0 -7
- package/dist/utilities/extensions/is.extension.js +4 -26
- package/dist/utilities/extensions/is.extension.js.map +1 -1
- package/dist/utilities/tests/peat.spec.d.ts +1 -0
- package/dist/utilities/tests/peat.spec.js +157 -0
- package/dist/utilities/tests/peat.spec.js.map +1 -0
- package/dist/utilities/tests/sleep.spec.d.ts +1 -0
- package/dist/utilities/tests/sleep.spec.js +21 -0
- package/dist/utilities/tests/sleep.spec.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const boilerplate_1 = require("@digital-alchemy/boilerplate");
|
|
4
|
+
const utilities_1 = require("@digital-alchemy/utilities");
|
|
5
|
+
const gotify_module_mjs_1 = require("../gotify.module.mjs");
|
|
6
|
+
const api_mjs_1 = require("../helpers/api.mjs");
|
|
7
|
+
const config_constants_mjs_1 = require("../helpers/config.constants.mjs");
|
|
8
|
+
const fetch_extension_mjs_1 = require("./fetch.extension.mjs");
|
|
9
|
+
// Mock the necessary modules and functions
|
|
10
|
+
jest.mock("@digital-alchemy/utilities");
|
|
11
|
+
describe("GotifyFetch", () => {
|
|
12
|
+
let gotifyFetch;
|
|
13
|
+
let loadedModule;
|
|
14
|
+
const testBaseUrl = "http://gotify.test.local";
|
|
15
|
+
const testToken = "abc123";
|
|
16
|
+
async function createBaseModule() {
|
|
17
|
+
if (loadedModule) {
|
|
18
|
+
utilities_1.ZCC.lifecycle.teardown();
|
|
19
|
+
}
|
|
20
|
+
loadedModule = await (0, boilerplate_1.bootTestingModule)({}, {
|
|
21
|
+
libs: {
|
|
22
|
+
gotify: {
|
|
23
|
+
[config_constants_mjs_1.BASE_URL]: testBaseUrl,
|
|
24
|
+
[config_constants_mjs_1.TOKEN]: testToken,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
gotify_module_mjs_1.LIB_GOTIFY.lifecycle.register();
|
|
29
|
+
boilerplate_1.LIB_BOILERPLATE.lifecycle.register();
|
|
30
|
+
await utilities_1.ZCC.lifecycle.exec();
|
|
31
|
+
}
|
|
32
|
+
beforeEach(async () => {
|
|
33
|
+
// Initialize the GotifyFetch before each test
|
|
34
|
+
jest.spyOn(gotify_module_mjs_1.LIB_GOTIFY, "getConfig").mockImplementation((key) => {
|
|
35
|
+
if (key === "BASE_URL")
|
|
36
|
+
return testBaseUrl;
|
|
37
|
+
if (key === "TOKEN")
|
|
38
|
+
return testToken;
|
|
39
|
+
return null;
|
|
40
|
+
});
|
|
41
|
+
gotifyFetch = (0, fetch_extension_mjs_1.GotifyFetch)();
|
|
42
|
+
await createBaseModule();
|
|
43
|
+
});
|
|
44
|
+
afterEach(async () => {
|
|
45
|
+
jest.clearAllMocks();
|
|
46
|
+
if (loadedModule) {
|
|
47
|
+
await utilities_1.ZCC.lifecycle.teardown();
|
|
48
|
+
loadedModule = undefined;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
describe(".fetch", () => {
|
|
52
|
+
it("should make a correct fetch call with provided arguments", async () => {
|
|
53
|
+
// Mock implementation for ZCC.fetch.fetch
|
|
54
|
+
const mockFetch = jest.fn().mockResolvedValue("mocked response");
|
|
55
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
56
|
+
const testData = {
|
|
57
|
+
headers: {},
|
|
58
|
+
url: "/test-url",
|
|
59
|
+
};
|
|
60
|
+
// Perform the fetch operation
|
|
61
|
+
const response = await gotifyFetch.fetch(testData);
|
|
62
|
+
// Assertions
|
|
63
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
64
|
+
...testData,
|
|
65
|
+
baseUrl: testBaseUrl,
|
|
66
|
+
headers: expect.objectContaining({
|
|
67
|
+
"X-Gotify-Key": testToken,
|
|
68
|
+
}),
|
|
69
|
+
});
|
|
70
|
+
expect(response).toEqual("mocked response");
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
describe(".application", () => {
|
|
74
|
+
const mockApplication = {
|
|
75
|
+
description: "Test Application Description",
|
|
76
|
+
id: 1,
|
|
77
|
+
image: "image/application_image.jpeg",
|
|
78
|
+
internal: false,
|
|
79
|
+
name: "Test Application",
|
|
80
|
+
token: "AppToken123",
|
|
81
|
+
};
|
|
82
|
+
const mockMessage = {
|
|
83
|
+
appid: 1,
|
|
84
|
+
date: "2024-01-07T12:00:00Z",
|
|
85
|
+
extras: {
|
|
86
|
+
"client::notification": {
|
|
87
|
+
click: {
|
|
88
|
+
url: "http://example.com",
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
id: 100,
|
|
93
|
+
message: "Test message content",
|
|
94
|
+
priority: api_mjs_1.MessagePriority.normal,
|
|
95
|
+
title: "Test Message",
|
|
96
|
+
};
|
|
97
|
+
it("should call fetch with correct arguments to create an application", async () => {
|
|
98
|
+
const mockFetch = jest.fn().mockResolvedValue(mockApplication);
|
|
99
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
100
|
+
const applicationParams = {
|
|
101
|
+
description: "Test Description",
|
|
102
|
+
name: "TestApp",
|
|
103
|
+
};
|
|
104
|
+
const response = await gotifyFetch.application.create(applicationParams);
|
|
105
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
106
|
+
baseUrl: testBaseUrl,
|
|
107
|
+
body: JSON.stringify(applicationParams),
|
|
108
|
+
headers: { "X-Gotify-Key": testToken },
|
|
109
|
+
method: "post",
|
|
110
|
+
url: `/application`,
|
|
111
|
+
});
|
|
112
|
+
expect(response).toEqual(mockApplication);
|
|
113
|
+
});
|
|
114
|
+
it("should call fetch with correct arguments to delete an application", async () => {
|
|
115
|
+
const mockFetch = jest.fn().mockResolvedValue({});
|
|
116
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
117
|
+
const appId = 123;
|
|
118
|
+
await gotifyFetch.application.delete(appId);
|
|
119
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
120
|
+
baseUrl: testBaseUrl,
|
|
121
|
+
headers: { "X-Gotify-Key": testToken },
|
|
122
|
+
method: "delete",
|
|
123
|
+
url: `/application/${appId}`,
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
it("should call fetch with correct arguments to delete messages of an application", async () => {
|
|
127
|
+
const mockFetch = jest.fn().mockResolvedValue({});
|
|
128
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
129
|
+
const appId = 123;
|
|
130
|
+
await gotifyFetch.application.deleteMessages(appId);
|
|
131
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
132
|
+
baseUrl: testBaseUrl,
|
|
133
|
+
headers: { "X-Gotify-Key": testToken },
|
|
134
|
+
method: "delete",
|
|
135
|
+
url: `/application/${appId}/message`,
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
it("should call fetch with correct arguments to get messages of an application", async () => {
|
|
139
|
+
const mockFetch = jest.fn().mockResolvedValue([mockMessage]);
|
|
140
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
141
|
+
const appId = 123;
|
|
142
|
+
const params = { limit: 10, since: 100 };
|
|
143
|
+
const response = await gotifyFetch.application.getMessages(appId, params);
|
|
144
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
145
|
+
baseUrl: testBaseUrl,
|
|
146
|
+
headers: { "X-Gotify-Key": testToken },
|
|
147
|
+
params,
|
|
148
|
+
url: `/application/${appId}/message`,
|
|
149
|
+
});
|
|
150
|
+
expect(response).toEqual([mockMessage]);
|
|
151
|
+
});
|
|
152
|
+
it("should call fetch with correct arguments to list applications", async () => {
|
|
153
|
+
const mockFetch = jest.fn().mockResolvedValue([mockApplication]);
|
|
154
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
155
|
+
const response = await gotifyFetch.application.list();
|
|
156
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
157
|
+
baseUrl: testBaseUrl,
|
|
158
|
+
headers: { "X-Gotify-Key": testToken },
|
|
159
|
+
url: `/application`,
|
|
160
|
+
});
|
|
161
|
+
expect(response).toEqual([mockApplication]);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe(".client", () => {
|
|
165
|
+
const mockClient = {
|
|
166
|
+
id: 123,
|
|
167
|
+
name: "Test Client",
|
|
168
|
+
token: "ClientToken123",
|
|
169
|
+
};
|
|
170
|
+
it("should call fetch with correct arguments to create a client", async () => {
|
|
171
|
+
const mockFetch = jest.fn().mockResolvedValue(mockClient);
|
|
172
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
173
|
+
const response = await gotifyFetch.client.create(mockClient);
|
|
174
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
175
|
+
baseUrl: testBaseUrl,
|
|
176
|
+
body: JSON.stringify(mockClient),
|
|
177
|
+
headers: { "X-Gotify-Key": testToken },
|
|
178
|
+
method: "post",
|
|
179
|
+
url: "/client",
|
|
180
|
+
});
|
|
181
|
+
expect(response).toEqual(mockClient);
|
|
182
|
+
});
|
|
183
|
+
it("should call fetch with correct arguments to delete a client", async () => {
|
|
184
|
+
const mockFetch = jest.fn().mockResolvedValue({});
|
|
185
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
186
|
+
await gotifyFetch.client.delete(mockClient.id);
|
|
187
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
188
|
+
baseUrl: testBaseUrl,
|
|
189
|
+
headers: { "X-Gotify-Key": testToken },
|
|
190
|
+
method: "delete",
|
|
191
|
+
url: `/client/${mockClient.id}`,
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
it("should call fetch with correct arguments to list clients", async () => {
|
|
195
|
+
const mockFetch = jest.fn().mockResolvedValue([mockClient]);
|
|
196
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
197
|
+
const response = await gotifyFetch.client.list();
|
|
198
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
199
|
+
baseUrl: testBaseUrl,
|
|
200
|
+
headers: { "X-Gotify-Key": testToken },
|
|
201
|
+
url: "/client",
|
|
202
|
+
});
|
|
203
|
+
expect(response).toEqual([mockClient]);
|
|
204
|
+
});
|
|
205
|
+
it("should call fetch with correct arguments to update a client", async () => {
|
|
206
|
+
const updatedClient = { ...mockClient, name: "Updated Test Client" };
|
|
207
|
+
const mockFetch = jest.fn().mockResolvedValue(updatedClient);
|
|
208
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
209
|
+
const response = await gotifyFetch.client.update(mockClient.id, updatedClient);
|
|
210
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
211
|
+
baseUrl: testBaseUrl,
|
|
212
|
+
body: JSON.stringify(updatedClient),
|
|
213
|
+
headers: { "X-Gotify-Key": testToken },
|
|
214
|
+
method: "put",
|
|
215
|
+
url: `/client/${mockClient.id}`,
|
|
216
|
+
});
|
|
217
|
+
expect(response).toEqual(updatedClient);
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
describe(".message", () => {
|
|
221
|
+
const mockMessage = {
|
|
222
|
+
appid: 1,
|
|
223
|
+
date: "2024-01-07T12:00:00Z",
|
|
224
|
+
extras: {
|
|
225
|
+
"client::notification": {
|
|
226
|
+
click: {
|
|
227
|
+
url: "http://example.com",
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
id: 100,
|
|
232
|
+
message: "Test message content",
|
|
233
|
+
priority: api_mjs_1.MessagePriority.normal,
|
|
234
|
+
title: "Test Message",
|
|
235
|
+
};
|
|
236
|
+
it("should call fetch with correct arguments to create a message", async () => {
|
|
237
|
+
const mockFetch = jest.fn().mockResolvedValue(mockMessage);
|
|
238
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
239
|
+
const response = await gotifyFetch.message.create(mockMessage);
|
|
240
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
241
|
+
baseUrl: testBaseUrl,
|
|
242
|
+
body: JSON.stringify(mockMessage),
|
|
243
|
+
headers: { "X-Gotify-Key": testToken },
|
|
244
|
+
method: "post",
|
|
245
|
+
url: "/message",
|
|
246
|
+
});
|
|
247
|
+
expect(response).toEqual(mockMessage);
|
|
248
|
+
});
|
|
249
|
+
it("should call fetch with correct arguments to delete a message", async () => {
|
|
250
|
+
const mockFetch = jest.fn().mockResolvedValue({});
|
|
251
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
252
|
+
await gotifyFetch.message.delete(mockMessage.id);
|
|
253
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
254
|
+
baseUrl: testBaseUrl,
|
|
255
|
+
headers: { "X-Gotify-Key": testToken },
|
|
256
|
+
method: "delete",
|
|
257
|
+
url: `/message/${mockMessage.id}`,
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
it("should call fetch with correct arguments to delete all messages", async () => {
|
|
261
|
+
const mockFetch = jest.fn().mockResolvedValue({});
|
|
262
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
263
|
+
await gotifyFetch.message.deleteAll();
|
|
264
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
265
|
+
baseUrl: testBaseUrl,
|
|
266
|
+
headers: { "X-Gotify-Key": testToken },
|
|
267
|
+
method: "delete",
|
|
268
|
+
url: `/message`,
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
it("should call fetch with correct arguments to list messages", async () => {
|
|
272
|
+
const mockFetch = jest.fn().mockResolvedValue([mockMessage]);
|
|
273
|
+
utilities_1.ZCC.fetch.fetch = mockFetch;
|
|
274
|
+
const response = await gotifyFetch.message.list();
|
|
275
|
+
expect(mockFetch).toHaveBeenCalledWith({
|
|
276
|
+
baseUrl: testBaseUrl,
|
|
277
|
+
headers: { "X-Gotify-Key": testToken },
|
|
278
|
+
url: "/message",
|
|
279
|
+
});
|
|
280
|
+
expect(response).toEqual([mockMessage]);
|
|
281
|
+
});
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
//# sourceMappingURL=fetch.extension.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.extension.spec.js","sourceRoot":"","sources":["../../../src/gotify/extensions/fetch.extension.spec.ts"],"names":[],"mappings":";;AAAA,8DAIsC;AACtC,0DAAiD;AAEjD,4DAAkD;AAClD,gDAK4B;AAC5B,0EAAkE;AAClE,+DAAoD;AAEpD,2CAA2C;AAC3C,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AAExC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,WAA2C,CAAC;IAChD,IAAI,YAAsC,CAAC;IAC3C,MAAM,WAAW,GAAG,0BAA0B,CAAC;IAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC;IAE3B,KAAK,UAAU,gBAAgB;QAC7B,IAAI,YAAY,EAAE,CAAC;YACjB,eAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QACD,YAAY,GAAG,MAAM,IAAA,+BAAiB,EACpC,EAAE,EACF;YACE,IAAI,EAAE;gBACJ,MAAM,EAAE;oBACN,CAAC,+BAAQ,CAAC,EAAE,WAAW;oBACvB,CAAC,4BAAK,CAAC,EAAE,SAAS;iBACnB;aACF;SACF,CACF,CAAC;QACF,8BAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAChC,6BAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,eAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,8CAA8C;QAC9C,IAAI,CAAC,KAAK,CAAC,8BAAU,EAAE,WAAW,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAW,EAAE,EAAE;YACrE,IAAI,GAAG,KAAK,UAAU;gBAAE,OAAO,WAAW,CAAC;YAC3C,IAAI,GAAG,KAAK,OAAO;gBAAE,OAAO,SAAS,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,WAAW,GAAG,IAAA,iCAAW,GAAE,CAAC;QAC5B,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,eAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC/B,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,0CAA0C;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;YAChE,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,QAAQ,GAAG;gBACf,OAAO,EAAE,EAAE;gBACX,GAAG,EAAE,WAAW;aACjB,CAAC;YAEF,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAEnD,aAAa;YACb,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,GAAG,QAAQ;gBACX,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC;oBAC/B,cAAc,EAAE,SAAS;iBAC1B,CAAC;aACH,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,MAAM,eAAe,GAAgB;YACnC,WAAW,EAAE,8BAA8B;YAC3C,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,8BAA8B;YACrC,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,aAAa;SACrB,CAAC;QACF,MAAM,WAAW,GAAY;YAC3B,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE;gBACN,sBAAsB,EAAE;oBACtB,KAAK,EAAE;wBACL,GAAG,EAAE,oBAAoB;qBAC1B;iBACF;aACF;YACD,EAAE,EAAE,GAAG;YACP,OAAO,EAAE,sBAAsB;YAC/B,QAAQ,EAAE,yBAAe,CAAC,MAAM;YAChC,KAAK,EAAE,cAAc;SACtB,CAAC;QAEF,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;YAC9D,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,iBAAiB,GAAG;gBACxB,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,SAAS;aAChB,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAEzE,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;gBACvC,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,cAAc;aACpB,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACjD,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,KAAK,GAAG,GAAG,CAAC;YAElB,MAAM,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE5C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,MAAM,EAAE,QAAQ;gBAChB,GAAG,EAAE,gBAAgB,KAAK,EAAE;aAC7B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;YAC7F,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACjD,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,KAAK,GAAG,GAAG,CAAC;YAElB,MAAM,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAEpD,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,MAAM,EAAE,QAAQ;gBAChB,GAAG,EAAE,gBAAgB,KAAK,UAAU;aACrC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAC5D,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,KAAK,GAAG,GAAG,CAAC;YAClB,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YAEzC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAE1E,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,MAAM;gBACN,GAAG,EAAE,gBAAgB,KAAK,UAAU;aACrC,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YAChE,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAEtD,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,GAAG,EAAE,cAAc;aACpB,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,MAAM,UAAU,GAAW;YACzB,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,gBAAgB;SACxB,CAAC;QAEF,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACzD,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAE7D,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;gBAChC,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,SAAS;aACf,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACjD,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAE/C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,MAAM,EAAE,QAAQ;gBAChB,GAAG,EAAE,WAAW,UAAU,CAAC,EAAE,EAAE;aAChC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3D,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAEjD,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,GAAG,EAAE,SAAS;aACf,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,aAAa,GAAG,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;YACrE,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YAC5D,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAC9C,UAAU,CAAC,EAAE,EACb,aAAa,CACd,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;gBACnC,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,WAAW,UAAU,CAAC,EAAE,EAAE;aAChC,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,MAAM,WAAW,GAAY;YAC3B,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE;gBACN,sBAAsB,EAAE;oBACtB,KAAK,EAAE;wBACL,GAAG,EAAE,oBAAoB;qBAC1B;iBACF;aACF;YACD,EAAE,EAAE,GAAG;YACP,OAAO,EAAE,sBAAsB;YAC/B,QAAQ,EAAE,yBAAe,CAAC,MAAM;YAChC,KAAK,EAAE,cAAc;SACtB,CAAC;QAEF,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAC1D,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAE/D,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;gBACjC,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,UAAU;aAChB,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACjD,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAEjD,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,MAAM,EAAE,QAAQ;gBAChB,GAAG,EAAE,YAAY,WAAW,CAAC,EAAE,EAAE;aAClC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACjD,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAEtC,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,MAAM,EAAE,QAAQ;gBAChB,GAAG,EAAE,UAAU;aAChB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAC5D,eAAG,CAAC,KAAK,CAAC,KAAmB,GAAG,SAAS,CAAC;YAE3C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAElD,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;gBACrC,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE;gBACtC,GAAG,EAAE,UAAU;aAChB,CAAC,CAAC;YACH,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Purge } from "./purge.extension";
|
|
3
|
+
export declare const PURGE_APP: import("..").ApplicationDefinition<{
|
|
4
|
+
purge: typeof Purge;
|
|
5
|
+
}, {
|
|
6
|
+
CANCEL_TIMEOUT: {
|
|
7
|
+
default: number;
|
|
8
|
+
description: string;
|
|
9
|
+
type: "number";
|
|
10
|
+
};
|
|
11
|
+
EXCLUDE_ENTITIES: {
|
|
12
|
+
default: any[];
|
|
13
|
+
description: string;
|
|
14
|
+
type: "string[]";
|
|
15
|
+
};
|
|
16
|
+
LIST_PLATFORMS: {
|
|
17
|
+
default: false;
|
|
18
|
+
description: string;
|
|
19
|
+
type: "boolean";
|
|
20
|
+
};
|
|
21
|
+
PLATFORM: {
|
|
22
|
+
description: string;
|
|
23
|
+
type: "string";
|
|
24
|
+
};
|
|
25
|
+
PURGE_RATE: {
|
|
26
|
+
default: number;
|
|
27
|
+
type: "number";
|
|
28
|
+
};
|
|
29
|
+
}>;
|
|
30
|
+
declare module "../boilerplate" {
|
|
31
|
+
interface LoadedModules {
|
|
32
|
+
purge: typeof PURGE_APP;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PURGE_APP = void 0;
|
|
5
|
+
const __1 = require("..");
|
|
6
|
+
const hass_1 = require("../hass");
|
|
7
|
+
const purge_extension_1 = require("./purge.extension");
|
|
8
|
+
exports.PURGE_APP = (0, __1.CreateApplication)({
|
|
9
|
+
configuration: {
|
|
10
|
+
CANCEL_TIMEOUT: {
|
|
11
|
+
default: 20,
|
|
12
|
+
description: "How long to wait before running purge",
|
|
13
|
+
type: "number",
|
|
14
|
+
},
|
|
15
|
+
EXCLUDE_ENTITIES: {
|
|
16
|
+
default: [],
|
|
17
|
+
description: "Omit these entities from the removal",
|
|
18
|
+
type: "string[]",
|
|
19
|
+
},
|
|
20
|
+
LIST_PLATFORMS: {
|
|
21
|
+
default: false,
|
|
22
|
+
description: "List platforms and exit",
|
|
23
|
+
type: "boolean",
|
|
24
|
+
},
|
|
25
|
+
PLATFORM: {
|
|
26
|
+
description: "Home assistant integration platform",
|
|
27
|
+
type: "string",
|
|
28
|
+
},
|
|
29
|
+
PURGE_RATE: {
|
|
30
|
+
default: 5,
|
|
31
|
+
type: "number",
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
libraries: [hass_1.LIB_HASS],
|
|
35
|
+
name: "purge",
|
|
36
|
+
services: { purge: purge_extension_1.Purge },
|
|
37
|
+
});
|
|
38
|
+
setImmediate(async () => {
|
|
39
|
+
await exports.PURGE_APP.bootstrap({
|
|
40
|
+
configuration: {
|
|
41
|
+
boilerplate: {
|
|
42
|
+
LOG_LEVEL: "info",
|
|
43
|
+
},
|
|
44
|
+
hass: {
|
|
45
|
+
AUTO_SCAN_CALL_PROXY: false,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/purge/main.ts"],"names":[],"mappings":";;;;AACA,0BAAuC;AACvC,kCAAmC;AACnC,uDAA0C;AAE7B,QAAA,SAAS,GAAG,IAAA,qBAAiB,EAAC;IACzC,aAAa,EAAE;QACb,cAAc,EAAE;YACd,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,uCAAuC;YACpD,IAAI,EAAE,QAAQ;SACf;QACD,gBAAgB,EAAE;YAChB,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,sCAAsC;YACnD,IAAI,EAAE,UAAU;SACjB;QACD,cAAc,EAAE;YACd,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,yBAAyB;YACtC,IAAI,EAAE,SAAS;SAChB;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,qCAAqC;YAClD,IAAI,EAAE,QAAQ;SACf;QACD,UAAU,EAAE;YACV,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,QAAQ;SACf;KACF;IACD,SAAS,EAAE,CAAC,eAAQ,CAAC;IACrB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,EAAE,KAAK,EAAE,uBAAK,EAAE;CAC3B,CAAC,CAAC;AACH,YAAY,CAAC,KAAK,IAAI,EAAE;IACtB,MAAM,iBAAS,CAAC,SAAS,CAAC;QACxB,aAAa,EAAE;YACb,WAAW,EAAE;gBACX,SAAS,EAAE,MAAM;aAClB;YACD,IAAI,EAAE;gBACJ,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Purge = void 0;
|
|
4
|
+
const process_1 = require("process");
|
|
5
|
+
const __1 = require("..");
|
|
6
|
+
function Purge({ hass, logger, config }) {
|
|
7
|
+
hass.socket.onConnect(async () => {
|
|
8
|
+
const data = (await hass.socket.sendMessage({
|
|
9
|
+
type: "config/entity_registry/list",
|
|
10
|
+
}));
|
|
11
|
+
if (config.purge.LIST_PLATFORMS) {
|
|
12
|
+
const platforms = __1.is.unique(data.map(({ platform }) => platform));
|
|
13
|
+
logger.info({ platforms }, `platform list`);
|
|
14
|
+
(0, process_1.exit)();
|
|
15
|
+
}
|
|
16
|
+
if (__1.is.empty(config.purge.PLATFORM)) {
|
|
17
|
+
logger.error(`define [purge.PLATFORM] to pick a platform to remove`);
|
|
18
|
+
(0, process_1.exit)();
|
|
19
|
+
}
|
|
20
|
+
logger.info({ platform: config.purge.PLATFORM }, `looking up entities`);
|
|
21
|
+
const filtered = data
|
|
22
|
+
.filter(i => i.platform === config.purge.PLATFORM &&
|
|
23
|
+
!config.purge.EXCLUDE_ENTITIES.includes(i.entity_id))
|
|
24
|
+
.map(({ entity_id }) => entity_id);
|
|
25
|
+
const currentlyExists = filtered.filter(i => hass.entity.byId(i).state !== "unavailable");
|
|
26
|
+
if (!__1.is.empty(currentlyExists)) {
|
|
27
|
+
logger.error({ entities: currentlyExists, platform: config.purge.PLATFORM }, `cannot purge entities, still online`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
logger.warn({
|
|
31
|
+
entities: filtered.sort((a, b) => (a > b ? __1.UP : __1.DOWN)),
|
|
32
|
+
}, `[purge] is getting ready to remove the following entities from Home Assistant`);
|
|
33
|
+
logger.warn("press [ctrl-c] before timer stops to cancel");
|
|
34
|
+
for (let i = __1.START; i < config.purge.CANCEL_TIMEOUT; i++) {
|
|
35
|
+
logger.warn(`removing in {%s}`, config.purge.CANCEL_TIMEOUT - i);
|
|
36
|
+
await (0, __1.sleep)(__1.SECOND);
|
|
37
|
+
}
|
|
38
|
+
await (0, __1.eachLimit)(filtered, config.purge.PURGE_RATE, async (entity_id) => {
|
|
39
|
+
await hass.socket.sendMessage({
|
|
40
|
+
entity_id,
|
|
41
|
+
type: "config/entity_registry/remove",
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
logger.info(`removed [%s] entities successfully`, filtered.length);
|
|
45
|
+
(0, process_1.exit)();
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
exports.Purge = Purge;
|
|
49
|
+
//# sourceMappingURL=purge.extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purge.extension.js","sourceRoot":"","sources":["../../src/purge/purge.extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Registry = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
4
5
|
const __1 = require("../..");
|
|
5
6
|
const HEARTBEAT_INTERVAL = 5;
|
|
6
7
|
const BOOT_TIME = new Date().toISOString();
|
|
8
|
+
const RETRY = 3;
|
|
9
|
+
function generateHash(input) {
|
|
10
|
+
const hash = (0, crypto_1.createHash)("sha256");
|
|
11
|
+
hash.update(input);
|
|
12
|
+
return hash.digest("hex");
|
|
13
|
+
}
|
|
7
14
|
function Registry({ lifecycle, logger, hass, cache, config, context, scheduler, }) {
|
|
8
15
|
// # Common
|
|
9
16
|
const LOADERS = new Map();
|
|
@@ -15,7 +22,7 @@ function Registry({ lifecycle, logger, hass, cache, config, context, scheduler,
|
|
|
15
22
|
const data = LOADERS.get(domain)();
|
|
16
23
|
return [domain, data];
|
|
17
24
|
}));
|
|
18
|
-
const hash =
|
|
25
|
+
const hash = generateHash(JSON.stringify(domains));
|
|
19
26
|
await hass.socket.fireEvent(`digital_alchemy_application_state`, {
|
|
20
27
|
app: __1.ZCC.application.name,
|
|
21
28
|
boot: BOOT_TIME,
|
|
@@ -76,6 +83,7 @@ function Registry({ lifecycle, logger, hass, cache, config, context, scheduler,
|
|
|
76
83
|
const registry = new Map();
|
|
77
84
|
const CACHE_KEY = (id) => `${domain}_cache:${id}`;
|
|
78
85
|
let LOAD_ME = new Set();
|
|
86
|
+
const missingEntities = () => [...LOAD_ME.values()].map(({ id }) => registry.get(id).name);
|
|
79
87
|
let LOADED_SYNAPSE_DATA;
|
|
80
88
|
// ## Export the data for hass
|
|
81
89
|
LOADERS.set(domain, () => {
|
|
@@ -132,19 +140,28 @@ function Registry({ lifecycle, logger, hass, cache, config, context, scheduler,
|
|
|
132
140
|
exec: ({ data }) => {
|
|
133
141
|
loaded = true;
|
|
134
142
|
LOADED_SYNAPSE_DATA = data;
|
|
135
|
-
LOAD_ME.forEach(
|
|
143
|
+
LOAD_ME.forEach(item => {
|
|
144
|
+
const { id, callback } = item;
|
|
145
|
+
callback(data[id]);
|
|
146
|
+
LOAD_ME.delete(item);
|
|
147
|
+
});
|
|
136
148
|
LOAD_ME = undefined;
|
|
137
149
|
},
|
|
138
150
|
once: true,
|
|
139
151
|
});
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
152
|
+
for (let i = __1.START; i <= RETRY; i++) {
|
|
153
|
+
if (i > __1.START) {
|
|
154
|
+
logger.warn({ domain, missing: missingEntities() }, `retrying state retrieval...`);
|
|
155
|
+
}
|
|
156
|
+
// send request for data
|
|
157
|
+
await hass.socket.fireEvent(`digital_alchemy_retrieve_state_${domain}`, {
|
|
158
|
+
app: __1.ZCC.application.name,
|
|
159
|
+
});
|
|
160
|
+
// wait 1 second
|
|
161
|
+
await (0, __1.sleep)(__1.SECOND);
|
|
162
|
+
if (loaded) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
148
165
|
}
|
|
149
166
|
//
|
|
150
167
|
// give up
|
|
@@ -156,7 +173,7 @@ function Registry({ lifecycle, logger, hass, cache, config, context, scheduler,
|
|
|
156
173
|
// But it still wouldn't cause that data to be revived.
|
|
157
174
|
// Hopefully sane logic for value defaulting was put in
|
|
158
175
|
//
|
|
159
|
-
logger.warn({ name: domain }, `could not retrieve current data synapse`);
|
|
176
|
+
logger.warn({ attempts: RETRY, missing: missingEntities(), name: domain }, `could not retrieve current data from synapse`);
|
|
160
177
|
LOAD_ME = undefined;
|
|
161
178
|
remove();
|
|
162
179
|
});
|
|
@@ -165,7 +182,7 @@ function Registry({ lifecycle, logger, hass, cache, config, context, scheduler,
|
|
|
165
182
|
// ### Add
|
|
166
183
|
add(data) {
|
|
167
184
|
const id = __1.is.empty(data.unique_id)
|
|
168
|
-
?
|
|
185
|
+
? generateHash(`${__1.ZCC.application.name}:${data.name}`)
|
|
169
186
|
: data.unique_id;
|
|
170
187
|
if (registry.has(id)) {
|
|
171
188
|
throw new __1.InternalError(context, `ENTITY_COLLISION`, `${domain} registry already id`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.extension.js","sourceRoot":"","sources":["../../../src/synapse/extensions/registry.extension.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"registry.extension.js","sourceRoot":"","sources":["../../../src/synapse/extensions/registry.extension.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAEpC,6BAUe;AAef,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC3C,MAAM,KAAK,GAAG,CAAC,CAAC;AAEhB,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,OAAO,EACP,SAAS,GACM;IACf,WAAW;IACX,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IACvD,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,SAAS,GAAG,6BAA6B,OAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAEtE,KAAK,UAAU,cAAc;QAC3B,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CACH,CAAC;QACF,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,mCAAmC,EAAE;YAC/D,GAAG,EAAE,OAAG,CAAC,WAAW,CAAC,IAAI;YACzB,IAAI,EAAE,SAAS;YACf,OAAO;YACP,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,eAAe;IACf,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;QAChC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACnC,SAAS,CAAC,QAAQ,CAAC;YACjB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;YACxD,QAAQ,EAAE,kBAAkB,GAAG,UAAM;SACtC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;QACnC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CACzB,wCAAwC,OAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAC/D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,yCAAyC;IACzC,cAAc;IACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAC/B,YAAY,GAAG,IAAI,CAAC;QACpB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACrD,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAClB,OAAO;QACP,KAAK,EAAE,4BAA4B;QACnC,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAmB,EAAE,EAAE;YACvC,IAAI,GAAG,KAAK,OAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;gBACjC,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;YAC/C,MAAM,cAAc,EAAE,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;IAEH,2CAA2C;IAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAClB,OAAO;QACP,KAAK,EAAE,gCAAgC;QACvC,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,0BAA0B,CAAC,CAAC;YACvD,MAAM,cAAc,EAAE,CAAC;QACzB,CAAC;KACF,CAAC,CAAC;IAEH,oBAAoB;IACpB,OAAO,UAAmC,EACxC,MAAM,EACN,OAAO,EACP,OAAO,GACoB;QAC3B,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgB,CAAC;QACzC,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,GAAG,MAAM,UAAU,EAAE,EAAE,CAAC;QAE1D,IAAI,OAAO,GAAG,IAAI,GAAG,EAGjB,CAAC;QACL,MAAM,eAAe,GAAG,GAAG,EAAE,CAC3B,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,mBAA4C,CAAC;QAEjD,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE;YACvB,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;gBAChD,OAAO;oBACL,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjC,IAAI,EAAE,MAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE;oBAC1D,EAAE;oBACF,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,SAAS,YAAY,CACnB,EAAU,EACV,QAA+B;YAE/B,0EAA0E;YAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC;oBACnD,yBAAyB;oBACzB,EAAE;oBACF,4BAA4B;oBAC5B,EAAE;oBACF,uFAAuF;oBACvF,gFAAgF;oBAChF,8BAA8B;oBAC9B,EAAE;oBACF,wGAAwG;oBACxG,kHAAkH;oBAClH,EAAE;oBACF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAM,CAAC,CAAC;oBACvC,OAAO;gBACT,CAAC;gBACD,eAAe;gBACf,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,0BAA0B,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAqB,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,4EAA4E;QAC5E,0FAA0F;QAC1F,wFAAwF;QACxF,mEAAmE;QACnE,8FAA8F;QAC9F,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC/B,IAAI,MAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,+BAA+B,CAAC,CAAC;YAChE,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,mBAAmB;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBACjC,OAAO;gBACP,KAAK,EAAE,iCAAiC,MAAM,EAAE;gBAChD,IAAI,EAAE,CAAC,EAAE,IAAI,EAAqC,EAAE,EAAE;oBACpD,MAAM,GAAG,IAAI,CAAC;oBACd,mBAAmB,GAAG,IAAI,CAAC;oBAC3B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBACrB,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;wBAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAW,CAAC,CAAC;wBAC7B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACvB,CAAC,CAAC,CAAC;oBACH,OAAO,GAAG,SAAS,CAAC;gBACtB,CAAC;gBACD,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,SAAK,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,IAAI,CAAC,GAAG,SAAK,EAAE,CAAC;oBACd,MAAM,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,EACtC,6BAA6B,CAC9B,CAAC;gBACJ,CAAC;gBACD,wBAAwB;gBACxB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CACzB,kCAAkC,MAAM,EAAE,EAC1C;oBACE,GAAG,EAAE,OAAG,CAAC,WAAW,CAAC,IAAI;iBAC1B,CACF,CAAC;gBACF,gBAAgB;gBAChB,MAAM,IAAA,SAAK,EAAC,UAAM,CAAC,CAAC;gBACpB,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO;gBACT,CAAC;YACH,CAAC;YACD,EAAE;YACF,UAAU;YACV,EAAE;YACF,+DAA+D;YAC/D,mFAAmF;YACnF,EAAE;YACF,6FAA6F;YAC7F,uDAAuD;YACvD,uDAAuD;YACvD,EAAE;YAEF,MAAM,CAAC,IAAI,CACT,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAC7D,8CAA8C,CAC/C,CAAC;YACF,OAAO,GAAG,SAAS,CAAC;YACpB,MAAM,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,OAAO;YACL,UAAU;YACV,GAAG,CAAC,IAAU;gBACZ,MAAM,EAAE,GAAG,MAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;oBACjC,CAAC,CAAC,YAAY,CAAC,GAAG,OAAG,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACtD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBACrB,MAAM,IAAI,iBAAa,CACrB,OAAO,EACP,kBAAkB,EAClB,GAAG,MAAM,sBAAsB,CAChC,CAAC;gBACJ,CAAC;gBACD,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACvB,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,CAAC,IAAI,CACT,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAClC,wBAAwB,CACzB,CAAC;gBACJ,CAAC;gBACD,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;gBAC3D,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,WAAW;YACX,IAAI,CAAC,EAAU;gBACb,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;YAED,eAAe;YACf,KAAK,CAAC,QAAQ,CAAI,EAAU,EAAE,YAAgB;gBAC5C,OAAO,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;YACtD,CAAC;YAED,mBAAmB;YACnB,YAAY;YAEZ,WAAW;YACX,KAAK,CAAC,IAAI,CAAC,EAAU,EAAE,IAAY;gBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;oBACvC,MAAM,CAAC,KAAK,CACV,0DAA0D,CAC3D,CAAC;oBACF,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,eAAe;YACf,KAAK,CAAC,QAAQ,CAAC,EAAU,EAAE,KAAc;gBACvC,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAzQD,4BAyQC"}
|
|
@@ -19,13 +19,6 @@ export declare class IsIt {
|
|
|
19
19
|
equal<T extends unknown>(a: T, b: T): boolean;
|
|
20
20
|
even(test: number): boolean;
|
|
21
21
|
function<T extends MaybeFunction>(test: unknown): test is T;
|
|
22
|
-
/**
|
|
23
|
-
* Generates a hash code for a string, based on the Java String hash function.
|
|
24
|
-
* It iterates through the characters of the string, combining the ASCII values
|
|
25
|
-
* with a prime multiplier to create a unique hash value.
|
|
26
|
-
* This method can be useful for creating a simple, consistent hash code.
|
|
27
|
-
*/
|
|
28
|
-
hash(text: string): string;
|
|
29
22
|
number(test: unknown): test is number;
|
|
30
23
|
object(test: unknown): test is object;
|
|
31
24
|
random<T>(list: T[]): T;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.is = exports.IsIt = void 0;
|
|
4
|
-
const
|
|
4
|
+
const util_1 = require("util");
|
|
5
5
|
const helpers_1 = require("../helpers");
|
|
6
|
-
const HASH_PRIME_MULTIPLIER = 31;
|
|
7
6
|
/**
|
|
8
7
|
* type testing and basic conversion tools
|
|
9
8
|
*/
|
|
@@ -21,7 +20,7 @@ class IsIt {
|
|
|
21
20
|
return typeof test === "string";
|
|
22
21
|
}
|
|
23
22
|
date(test) {
|
|
24
|
-
return test
|
|
23
|
+
return util_1.types.isDate(test);
|
|
25
24
|
}
|
|
26
25
|
empty(test) {
|
|
27
26
|
if (test === undefined) {
|
|
@@ -30,7 +29,7 @@ class IsIt {
|
|
|
30
29
|
if (typeof test === "string" || Array.isArray(test)) {
|
|
31
30
|
return test.length === helpers_1.EMPTY;
|
|
32
31
|
}
|
|
33
|
-
if (test
|
|
32
|
+
if (util_1.types.isMap(test) || util_1.types.isSet(test)) {
|
|
34
33
|
return test.size === helpers_1.EMPTY;
|
|
35
34
|
}
|
|
36
35
|
if (typeof test === "object") {
|
|
@@ -48,13 +47,7 @@ class IsIt {
|
|
|
48
47
|
* ### Deep equality test
|
|
49
48
|
*/
|
|
50
49
|
equal(a, b) {
|
|
51
|
-
|
|
52
|
-
(0, assert_1.deepEqual)(a, b);
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
50
|
+
return (0, util_1.isDeepStrictEqual)(a, b);
|
|
58
51
|
}
|
|
59
52
|
even(test) {
|
|
60
53
|
return test % helpers_1.EVEN === helpers_1.EMPTY;
|
|
@@ -62,21 +55,6 @@ class IsIt {
|
|
|
62
55
|
function(test) {
|
|
63
56
|
return typeof test === "function";
|
|
64
57
|
}
|
|
65
|
-
/**
|
|
66
|
-
* Generates a hash code for a string, based on the Java String hash function.
|
|
67
|
-
* It iterates through the characters of the string, combining the ASCII values
|
|
68
|
-
* with a prime multiplier to create a unique hash value.
|
|
69
|
-
* This method can be useful for creating a simple, consistent hash code.
|
|
70
|
-
*/
|
|
71
|
-
hash(text) {
|
|
72
|
-
let hash = helpers_1.START;
|
|
73
|
-
for (let i = helpers_1.START; i < text.length; i++) {
|
|
74
|
-
hash =
|
|
75
|
-
(hash << HASH_PRIME_MULTIPLIER) - hash + (text.codePointAt(i) || helpers_1.NONE);
|
|
76
|
-
hash = Math.trunc(hash);
|
|
77
|
-
}
|
|
78
|
-
return hash.toString();
|
|
79
|
-
}
|
|
80
58
|
number(test) {
|
|
81
59
|
return typeof test === "number" && !Number.isNaN(test);
|
|
82
60
|
}
|