@bscotch/gamemaker-releases 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.md ADDED
@@ -0,0 +1,23 @@
1
+ # License for the Stitch Monorepo
2
+
3
+ License information for the content of this git repository. This various packages in this repo are developed by [Butterscotch Shenanigans](https://www.bscotch.net) ("Bscotch").
4
+
5
+ ## Stitch name and logo
6
+
7
+ ![Stitch Logo](images/stitch-logo.png The Stitch Logo, copyright and trademark Butterscotch Shenanigans, all rights reserved.)
8
+
9
+ Stitch™ and its logo are trademarks of Bscotch. Bscotch reserves all rights to Stitch and its logo.
10
+
11
+ Stitch Logo ©2022 by Bscotch. All rights reserved.
12
+
13
+ ## Other code and content
14
+
15
+ Everything found in this project, except for the Stitch name and logo as described above or unless otherwise specified by a more proximal LICENSE file, falls under the MIT license (https://opensource.org/license/mit/):
16
+
17
+ Copyright 2023 Butterscotch Shenanigans
18
+
19
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
20
+
21
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
22
+
23
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  This package centralizes all of the official GameMaker information (for Windows versions) into a single structured document. It is used by [Butterscotch Shenanigans](https://www.bscotch.net) to keep an up-to-date, centralized history of releases. These are uploaded [as GitHub releases](https://github.com/bscotch/gamemaker-info/releases).
6
6
 
7
- Latest releases document: https://github.com/bscotch/gamemaker-info/releases/latest/download/releases-summary.json
7
+ Latest releases document: https://github.com/bscotch/stitch/releases/latest/download/releases-summary.json
8
8
 
9
9
  ## Requirements
10
10
 
package/dist/browser.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- /**
2
- * @file Browser-compatible exports
3
- */
4
- export { ideFeedUrls, runtimeFeedUrls } from './urls.js';
5
- export { gameMakerReleaseWithNotesSchema } from './feeds.types.js';
6
- export type { ArtifactType, Channel, GameMakerRelease, GameMakerReleaseWithNotes, } from './feeds.types.js';
7
- export { releasesUrl } from './releases.js';
1
+ /**
2
+ * @file Browser-compatible exports
3
+ */
4
+ export { ideFeedUrls, runtimeFeedUrls } from './urls.js';
5
+ export { gameMakerReleaseWithNotesSchema } from './feeds.types.js';
6
+ export type { ArtifactType, Channel, GameMakerRelease, GameMakerReleaseWithNotes, } from './feeds.types.js';
7
+ export { releasesUrl } from './releases.js';
8
8
  //# sourceMappingURL=browser.d.ts.map
package/dist/browser.js CHANGED
@@ -1,7 +1,7 @@
1
- /**
2
- * @file Browser-compatible exports
3
- */
4
- export { ideFeedUrls, runtimeFeedUrls } from './urls.js';
5
- export { gameMakerReleaseWithNotesSchema } from './feeds.types.js';
6
- export { releasesUrl } from './releases.js';
1
+ /**
2
+ * @file Browser-compatible exports
3
+ */
4
+ export { ideFeedUrls, runtimeFeedUrls } from './urls.js';
5
+ export { gameMakerReleaseWithNotesSchema } from './feeds.types.js';
6
+ export { releasesUrl } from './releases.js';
7
7
  //# sourceMappingURL=browser.js.map
@@ -1,3 +1,3 @@
1
- export declare const defaultCacheDir: import("@bscotch/pathy").Pathy<unknown>;
2
- export declare const defaultNotesCachePath: import("@bscotch/pathy").Pathy<unknown>;
1
+ export declare const defaultCacheDir: import("@bscotch/pathy").Pathy<unknown>;
2
+ export declare const defaultNotesCachePath: import("@bscotch/pathy").Pathy<unknown>;
3
3
  //# sourceMappingURL=constants.d.ts.map
package/dist/constants.js CHANGED
@@ -1,5 +1,5 @@
1
- import os from 'os';
2
- import { pathy } from '@bscotch/pathy';
3
- export const defaultCacheDir = pathy(os.tmpdir(), '@bscotch/gamemaker-releases');
4
- export const defaultNotesCachePath = defaultCacheDir.join('release-notes-cache.json');
1
+ import os from 'os';
2
+ import { pathy } from '@bscotch/pathy';
3
+ export const defaultCacheDir = pathy(os.tmpdir(), '@bscotch/gamemaker-releases');
4
+ export const defaultNotesCachePath = defaultCacheDir.join('release-notes-cache.json');
5
5
  //# sourceMappingURL=constants.js.map
package/dist/feeds.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Pathy } from '@bscotch/pathy';
2
- import { GameMakerRelease, GameMakerReleaseWithNotes } from './feeds.types.js';
3
- export declare function computeReleasesSummaryWithNotes(releases?: GameMakerRelease[], cache?: Pathy | string): Promise<GameMakerReleaseWithNotes[]>;
4
- export declare function computeReleasesSummary(): Promise<GameMakerRelease[]>;
1
+ import { Pathy } from '@bscotch/pathy';
2
+ import { GameMakerRelease, GameMakerReleaseWithNotes } from './feeds.types.js';
3
+ export declare function computeReleasesSummaryWithNotes(releases?: GameMakerRelease[], cache?: Pathy | string): Promise<GameMakerReleaseWithNotes[]>;
4
+ export declare function computeReleasesSummary(): Promise<GameMakerRelease[]>;
5
5
  //# sourceMappingURL=feeds.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../src/feeds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAKvC,OAAO,EAKL,gBAAgB,EAEhB,yBAAyB,EAE1B,MAAM,kBAAkB,CAAC;AAI1B,wBAAsB,+BAA+B,CACnD,QAAQ,CAAC,EAAE,gBAAgB,EAAE,EAC7B,KAAK,GAAE,KAAK,GAAG,MAA8B,GAC5C,OAAO,CAAC,yBAAyB,EAAE,CAAC,CA2BtC;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA2B1E"}
1
+ {"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../src/feeds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAIvC,OAAO,EAKN,gBAAgB,EAEhB,yBAAyB,EAEzB,MAAM,kBAAkB,CAAC;AAI1B,wBAAsB,+BAA+B,CACpD,QAAQ,CAAC,EAAE,gBAAgB,EAAE,EAC7B,KAAK,GAAE,KAAK,GAAG,MAA8B,GAC3C,OAAO,CAAC,yBAAyB,EAAE,CAAC,CA4BtC;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA2B1E"}
package/dist/feeds.js CHANGED
@@ -1,78 +1,81 @@
1
- import { assert } from '@bscotch/utility/browser';
2
- import { z } from 'zod';
3
- import { defaultNotesCachePath } from './constants.js';
4
- import { downloadRssFeed, findPairedRuntime } from './feeds.lib.js';
5
- import { channels, gameMakerArtifactSchema, gameMakerReleaseSchema, gameMakerReleaseWithNotesSchema, } from './feeds.types.js';
6
- import { listReleaseNotes } from './notes.js';
7
- import { ideFeedUrls, runtimeFeedUrls } from './urls.js';
8
- export async function computeReleasesSummaryWithNotes(releases, cache = defaultNotesCachePath) {
9
- releases ||= await computeReleasesSummary();
10
- const notes = await listReleaseNotes(releases, cache);
11
- const withNotes = [];
12
- for (const release of releases) {
13
- const ideNotes = notes[release.ide.notesUrl];
14
- assert(ideNotes, `No notes found for IDE release ${release.ide.version}`);
15
- const runtimeNotes = notes[release.runtime.notesUrl];
16
- assert(runtimeNotes, `No notes found for IDE release ${release.runtime.version}`);
17
- const ide = { ...release.ide, notes: ideNotes.changes };
18
- const runtime = { ...release.runtime, notes: runtimeNotes.changes };
19
- withNotes.push({
20
- channel: release.channel,
21
- summary: release.summary,
22
- publishedAt: release.publishedAt,
23
- ide,
24
- runtime,
25
- });
26
- }
27
- withNotes.sort((a, b) => new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime());
28
- return z.array(gameMakerReleaseWithNotesSchema).parse(withNotes);
29
- }
30
- export async function computeReleasesSummary() {
31
- const ideArtifacts = await listArtifacts('ide');
32
- const runtimeArtifacts = await listArtifacts('runtime');
33
- const releases = [];
34
- for (let i = 0, r = 0; i < ideArtifacts.length; i++) {
35
- const ide = ideArtifacts[i];
36
- if (!ide.publishedAt) {
37
- continue;
38
- }
39
- const nextR = findPairedRuntime(runtimeArtifacts, ide, r);
40
- r = nextR === -1 ? r : nextR;
41
- if (nextR === -1) {
42
- continue;
43
- }
44
- releases.push({
45
- channel: ide.channel,
46
- summary: ide.summary,
47
- publishedAt: ide.publishedAt,
48
- ide,
49
- runtime: runtimeArtifacts[nextR],
50
- });
51
- }
52
- releases.sort((a, b) => new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime());
53
- return z.array(gameMakerReleaseSchema).parse(releases);
54
- }
55
- async function listArtifacts(type) {
56
- const entries = [];
57
- const urls = type === 'ide' ? ideFeedUrls() : runtimeFeedUrls();
58
- const feeds = await Promise.all(channels.map((channel) => downloadRssFeed(urls[channel])));
59
- for (let i = 0; i < channels.length; i++) {
60
- const channel = channels[i];
61
- const feed = feeds[i];
62
- for (const entry of feed) {
63
- entries.push(gameMakerArtifactSchema.parse({
64
- type,
65
- channel,
66
- publishedAt: entry.pubDate,
67
- version: entry.title.match(/^Version (.*)/)[1],
68
- link: entry.link,
69
- feedUrl: urls[channel],
70
- summary: entry.description,
71
- notesUrl: entry.comments,
72
- }));
73
- }
74
- }
75
- entries.sort((a, b) => new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime());
76
- return entries;
77
- }
1
+ import { z } from 'zod';
2
+ import { defaultNotesCachePath } from './constants.js';
3
+ import { downloadRssFeed, findPairedRuntime } from './feeds.lib.js';
4
+ import { channels, gameMakerArtifactSchema, gameMakerReleaseSchema, gameMakerReleaseWithNotesSchema, } from './feeds.types.js';
5
+ import { listReleaseNotes } from './notes.js';
6
+ import { ideFeedUrls, runtimeFeedUrls } from './urls.js';
7
+ export async function computeReleasesSummaryWithNotes(releases, cache = defaultNotesCachePath) {
8
+ releases ||= await computeReleasesSummary();
9
+ const notes = await listReleaseNotes(releases, cache);
10
+ const withNotes = [];
11
+ const emptyChanges = {
12
+ changes: {
13
+ since: null,
14
+ groups: [],
15
+ },
16
+ };
17
+ for (const release of releases) {
18
+ const ideNotes = notes[release.ide.notesUrl] || emptyChanges;
19
+ const runtimeNotes = notes[release.runtime.notesUrl] || emptyChanges;
20
+ const ide = { ...release.ide, notes: ideNotes.changes };
21
+ const runtime = { ...release.runtime, notes: runtimeNotes.changes };
22
+ withNotes.push({
23
+ channel: release.channel,
24
+ summary: release.summary,
25
+ publishedAt: release.publishedAt,
26
+ ide,
27
+ runtime,
28
+ });
29
+ }
30
+ withNotes.sort((a, b) => new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime());
31
+ return z.array(gameMakerReleaseWithNotesSchema).parse(withNotes);
32
+ }
33
+ export async function computeReleasesSummary() {
34
+ const ideArtifacts = await listArtifacts('ide');
35
+ const runtimeArtifacts = await listArtifacts('runtime');
36
+ const releases = [];
37
+ for (let i = 0, r = 0; i < ideArtifacts.length; i++) {
38
+ const ide = ideArtifacts[i];
39
+ if (!ide.publishedAt) {
40
+ continue;
41
+ }
42
+ const nextR = findPairedRuntime(runtimeArtifacts, ide, r);
43
+ r = nextR === -1 ? r : nextR;
44
+ if (nextR === -1) {
45
+ continue;
46
+ }
47
+ releases.push({
48
+ channel: ide.channel,
49
+ summary: ide.summary,
50
+ publishedAt: ide.publishedAt,
51
+ ide,
52
+ runtime: runtimeArtifacts[nextR],
53
+ });
54
+ }
55
+ releases.sort((a, b) => new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime());
56
+ return z.array(gameMakerReleaseSchema).parse(releases);
57
+ }
58
+ async function listArtifacts(type) {
59
+ const entries = [];
60
+ const urls = type === 'ide' ? ideFeedUrls() : runtimeFeedUrls();
61
+ const feeds = await Promise.all(channels.map((channel) => downloadRssFeed(urls[channel])));
62
+ for (let i = 0; i < channels.length; i++) {
63
+ const channel = channels[i];
64
+ const feed = feeds[i];
65
+ for (const entry of feed) {
66
+ entries.push(gameMakerArtifactSchema.parse({
67
+ type,
68
+ channel,
69
+ publishedAt: entry.pubDate,
70
+ version: entry.title.match(/^Version (.*)/)[1],
71
+ link: entry.link,
72
+ feedUrl: urls[channel],
73
+ summary: entry.description,
74
+ notesUrl: entry.comments,
75
+ }));
76
+ }
77
+ }
78
+ entries.sort((a, b) => new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime());
79
+ return entries;
80
+ }
78
81
  //# sourceMappingURL=feeds.js.map
package/dist/feeds.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"feeds.js","sourceRoot":"","sources":["../src/feeds.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feeds.js","sourceRoot":"","sources":["../src/feeds.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAEN,QAAQ,EAER,uBAAuB,EAEvB,sBAAsB,EAEtB,+BAA+B,GAC/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACpD,QAA6B,EAC7B,QAAwB,qBAAqB;IAE7C,QAAQ,KAAK,MAAM,sBAAsB,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtD,MAAM,SAAS,GAAgC,EAAE,CAAC;IAClD,MAAM,YAAY,GAAG;QACpB,OAAO,EAAE;YACR,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,EAAE;SACV;KACD,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC;QAC7D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC;QACrE,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC;QACpE,SAAS,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,GAAG;YACH,OAAO;SACP,CAAC,CAAC;KACH;IACD,SAAS,CAAC,IAAI,CACb,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACR,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CACtE,CAAC;IACF,OAAO,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC3C,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpD,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;YACrB,SAAS;SACT;QACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7B,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACjB,SAAS;SACT;QACD,QAAQ,CAAC,IAAI,CAAC;YACb,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,OAAO,EAAE,GAAG,CAAC,OAAQ;YACrB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,GAAG;YACH,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC;SAChC,CAAC,CAAC;KACH;IACD,QAAQ,CAAC,IAAI,CACZ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACR,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CACtE,CAAC;IACF,OAAO,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAkB;IAC9C,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IAChE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACzD,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;YACzB,OAAO,CAAC,IAAI,CACX,uBAAuB,CAAC,KAAK,CAAC;gBAC7B,IAAI;gBACJ,OAAO;gBACP,WAAW,EAAE,KAAK,CAAC,OAAO;gBAC1B,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAE,CAAC,CAAC,CAAC;gBAC/C,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;gBACtB,OAAO,EAAE,KAAK,CAAC,WAAW;gBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACxB,CAAC,CACF,CAAC;SACF;KACD;IACD,OAAO,CAAC,IAAI,CACX,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACR,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CACtE,CAAC;IACF,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { RssFeedEntry, type GameMakerArtifact } from './feeds.types.js';
2
- export declare function findPairedRuntime(runtimeFeed: GameMakerArtifact[], ide: GameMakerArtifact, searchIndex: number): number;
3
- export declare function downloadRssFeed(url: string): Promise<RssFeedEntry[]>;
1
+ import { RssFeedEntry, type GameMakerArtifact } from './feeds.types.js';
2
+ export declare function findPairedRuntime(runtimeFeed: GameMakerArtifact[], ide: GameMakerArtifact, searchIndex: number): number;
3
+ export declare function downloadRssFeed(url: string): Promise<RssFeedEntry[]>;
4
4
  //# sourceMappingURL=feeds.lib.d.ts.map
package/dist/feeds.lib.js CHANGED
@@ -1,53 +1,53 @@
1
- import { dateDifferenceDays } from '@bscotch/utility/browser';
2
- import { rssFeedSchema, } from './feeds.types.js';
3
- import { fetchXml } from './fetch.js';
4
- function daysApart(a, b) {
5
- return dateDifferenceDays(new Date(a), new Date(b));
6
- }
7
- function absoluteDaysApart(a, b) {
8
- return Math.abs(daysApart(a, b));
9
- }
10
- export function findPairedRuntime(runtimeFeed, ide, searchIndex) {
11
- // Go backwards until the dateDiff starts growing
12
- let dateDiff = Infinity;
13
- for (let r = searchIndex; r >= 0; r--) {
14
- const runtime = runtimeFeed[r];
15
- if (!runtime.publishedAt || runtime.channel !== ide.channel) {
16
- continue;
17
- }
18
- const diff = absoluteDaysApart(runtime.publishedAt, ide.publishedAt);
19
- if (diff < dateDiff) {
20
- dateDiff = diff;
21
- searchIndex = r;
22
- }
23
- else {
24
- break;
25
- }
26
- }
27
- // Go forwards until the dateDiff starts growing
28
- dateDiff = Infinity;
29
- for (let r = searchIndex; r < runtimeFeed.length; r++) {
30
- const runtime = runtimeFeed[r];
31
- if (!runtime.publishedAt || runtime.channel !== ide.channel) {
32
- continue;
33
- }
34
- const diff = absoluteDaysApart(runtime.publishedAt, ide.publishedAt);
35
- if (diff < dateDiff) {
36
- dateDiff = diff;
37
- searchIndex = r;
38
- }
39
- else {
40
- break;
41
- }
42
- }
43
- const runtime = runtimeFeed[searchIndex];
44
- if (!runtime || absoluteDaysApart(runtime.publishedAt, ide.publishedAt) > 1) {
45
- return -1;
46
- }
47
- return searchIndex;
48
- }
49
- export async function downloadRssFeed(url) {
50
- const feed = await fetchXml(url, rssFeedSchema);
51
- return feed.rss.channel.item;
52
- }
1
+ import { dateDifferenceDays } from '@bscotch/utility/browser';
2
+ import { rssFeedSchema, } from './feeds.types.js';
3
+ import { fetchXml } from './fetch.js';
4
+ function daysApart(a, b) {
5
+ return dateDifferenceDays(new Date(a), new Date(b));
6
+ }
7
+ function absoluteDaysApart(a, b) {
8
+ return Math.abs(daysApart(a, b));
9
+ }
10
+ export function findPairedRuntime(runtimeFeed, ide, searchIndex) {
11
+ // Go backwards until the dateDiff starts growing
12
+ let dateDiff = Infinity;
13
+ for (let r = searchIndex; r >= 0; r--) {
14
+ const runtime = runtimeFeed[r];
15
+ if (!runtime.publishedAt || runtime.channel !== ide.channel) {
16
+ continue;
17
+ }
18
+ const diff = absoluteDaysApart(runtime.publishedAt, ide.publishedAt);
19
+ if (diff < dateDiff) {
20
+ dateDiff = diff;
21
+ searchIndex = r;
22
+ }
23
+ else {
24
+ break;
25
+ }
26
+ }
27
+ // Go forwards until the dateDiff starts growing
28
+ dateDiff = Infinity;
29
+ for (let r = searchIndex; r < runtimeFeed.length; r++) {
30
+ const runtime = runtimeFeed[r];
31
+ if (!runtime.publishedAt || runtime.channel !== ide.channel) {
32
+ continue;
33
+ }
34
+ const diff = absoluteDaysApart(runtime.publishedAt, ide.publishedAt);
35
+ if (diff < dateDiff) {
36
+ dateDiff = diff;
37
+ searchIndex = r;
38
+ }
39
+ else {
40
+ break;
41
+ }
42
+ }
43
+ const runtime = runtimeFeed[searchIndex];
44
+ if (!runtime || absoluteDaysApart(runtime.publishedAt, ide.publishedAt) > 1) {
45
+ return -1;
46
+ }
47
+ return searchIndex;
48
+ }
49
+ export async function downloadRssFeed(url) {
50
+ const feed = await fetchXml(url, rssFeedSchema);
51
+ return feed.rss.channel.item;
52
+ }
53
53
  //# sourceMappingURL=feeds.lib.js.map