@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.
Files changed (51) hide show
  1. package/dist/boilerplate/extensions/cache.extension.spec.d.ts +6 -0
  2. package/dist/boilerplate/extensions/cache.extension.spec.js +222 -0
  3. package/dist/boilerplate/extensions/cache.extension.spec.js.map +1 -0
  4. package/dist/boilerplate/extensions/configuration.extension.d.ts +1 -1
  5. package/dist/boilerplate/extensions/configuration.extension.js +3 -0
  6. package/dist/boilerplate/extensions/configuration.extension.js.map +1 -1
  7. package/dist/boilerplate/extensions/fetch.extension.js +1 -1
  8. package/dist/boilerplate/extensions/fetch.extension.js.map +1 -1
  9. package/dist/boilerplate/extensions/fetch.extension.spec.d.ts +8 -0
  10. package/dist/boilerplate/extensions/fetch.extension.spec.js +59 -0
  11. package/dist/boilerplate/extensions/fetch.extension.spec.js.map +1 -0
  12. package/dist/boilerplate/extensions/logger.extension.js +8 -1
  13. package/dist/boilerplate/extensions/logger.extension.js.map +1 -1
  14. package/dist/boilerplate/extensions/wiring.extension.js +20 -7
  15. package/dist/boilerplate/extensions/wiring.extension.js.map +1 -1
  16. package/dist/boilerplate/extensions/wiring.extension.spec.d.ts +8 -0
  17. package/dist/boilerplate/extensions/wiring.extension.spec.js +215 -0
  18. package/dist/boilerplate/extensions/wiring.extension.spec.js.map +1 -0
  19. package/dist/boilerplate/helpers/config-environment-loader.helper.d.ts +1 -1
  20. package/dist/boilerplate/helpers/config-environment-loader.helper.js +3 -1
  21. package/dist/boilerplate/helpers/config-environment-loader.helper.js.map +1 -1
  22. package/dist/boilerplate/helpers/config-file-loader.helper.d.ts +1 -1
  23. package/dist/boilerplate/helpers/config-file-loader.helper.js +6 -5
  24. package/dist/boilerplate/helpers/config-file-loader.helper.js.map +1 -1
  25. package/dist/boilerplate/helpers/config.helper.d.ts +2 -0
  26. package/dist/boilerplate/helpers/config.helper.js.map +1 -1
  27. package/dist/boilerplate/helpers/errors.helper.d.ts +1 -15
  28. package/dist/boilerplate/helpers/errors.helper.js +12 -40
  29. package/dist/boilerplate/helpers/errors.helper.js.map +1 -1
  30. package/dist/boilerplate/helpers/wiring.helper.d.ts +2 -2
  31. package/dist/gotify/extensions/fetch.extension.spec.d.ts +1 -0
  32. package/dist/gotify/extensions/fetch.extension.spec.js +284 -0
  33. package/dist/gotify/extensions/fetch.extension.spec.js.map +1 -0
  34. package/dist/purge/main.d.ts +34 -0
  35. package/dist/purge/main.js +50 -0
  36. package/dist/purge/main.js.map +1 -0
  37. package/dist/purge/purge.extension.d.ts +2 -0
  38. package/dist/purge/purge.extension.js +49 -0
  39. package/dist/purge/purge.extension.js.map +1 -0
  40. package/dist/synapse/extensions/registry.extension.js +29 -12
  41. package/dist/synapse/extensions/registry.extension.js.map +1 -1
  42. package/dist/utilities/extensions/is.extension.d.ts +0 -7
  43. package/dist/utilities/extensions/is.extension.js +4 -26
  44. package/dist/utilities/extensions/is.extension.js.map +1 -1
  45. package/dist/utilities/tests/peat.spec.d.ts +1 -0
  46. package/dist/utilities/tests/peat.spec.js +157 -0
  47. package/dist/utilities/tests/peat.spec.js.map +1 -0
  48. package/dist/utilities/tests/sleep.spec.d.ts +1 -0
  49. package/dist/utilities/tests/sleep.spec.js +21 -0
  50. package/dist/utilities/tests/sleep.spec.js.map +1 -0
  51. 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":"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"}
@@ -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,2 @@
1
+ import { TServiceParams } from "..";
2
+ export declare function Purge({ hass, logger, config }: TServiceParams): void;
@@ -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 = __1.is.hash(JSON.stringify(domains));
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(({ id, callback }) => callback(data[id]));
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
- // send request for data
141
- await hass.socket.fireEvent(`digital_alchemy_retrieve_state_${domain}`, {
142
- app: __1.ZCC.application.name,
143
- });
144
- // wait 1 second
145
- await (0, __1.sleep)(__1.SECOND);
146
- if (loaded) {
147
- return;
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
- ? __1.is.hash(`${__1.ZCC.application.name}:${data.name}`)
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":"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"}
1
+ {"version":3,"file":"registry.extension.js","sourceRoot":"","sources":["../../../src/synapse/extensions/registry.extension.ts"],"names":[],"mappings":"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"}
@@ -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 assert_1 = require("assert");
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 instanceof Date;
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 instanceof Map || test instanceof Set) {
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
- try {
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
  }