@allyhub/sdk 0.0.0-stage → 0.1.0-alpha.6

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 (57) hide show
  1. package/LICENSE +241 -0
  2. package/NOTICE +81 -0
  3. package/README.md +16 -2
  4. package/client.d.ts +86 -0
  5. package/dist/anim.d.ts +41 -0
  6. package/dist/anim.d.ts.map +1 -0
  7. package/dist/anim.js +75 -0
  8. package/dist/anim.js.map +1 -0
  9. package/dist/define.d.ts +75 -0
  10. package/dist/define.d.ts.map +1 -0
  11. package/dist/define.js +95 -0
  12. package/dist/define.js.map +1 -0
  13. package/dist/dom.d.ts +210 -0
  14. package/dist/dom.d.ts.map +1 -0
  15. package/dist/dom.js +457 -0
  16. package/dist/dom.js.map +1 -0
  17. package/dist/fit.d.ts +24 -0
  18. package/dist/fit.d.ts.map +1 -0
  19. package/dist/fit.js +60 -0
  20. package/dist/fit.js.map +1 -0
  21. package/dist/index.d.ts +14 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +11 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/media.d.ts +9 -0
  26. package/dist/media.d.ts.map +1 -0
  27. package/dist/media.js +27 -0
  28. package/dist/media.js.map +1 -0
  29. package/dist/messages.d.ts +39 -0
  30. package/dist/messages.d.ts.map +1 -0
  31. package/dist/messages.js +2 -0
  32. package/dist/messages.js.map +1 -0
  33. package/dist/noise.d.ts +15 -0
  34. package/dist/noise.d.ts.map +1 -0
  35. package/dist/noise.js +233 -0
  36. package/dist/noise.js.map +1 -0
  37. package/dist/parts.d.ts +140 -0
  38. package/dist/parts.d.ts.map +1 -0
  39. package/dist/parts.js +414 -0
  40. package/dist/parts.js.map +1 -0
  41. package/dist/paths.d.ts +85 -0
  42. package/dist/paths.d.ts.map +1 -0
  43. package/dist/paths.js +720 -0
  44. package/dist/paths.js.map +1 -0
  45. package/dist/piece.d.ts +64 -0
  46. package/dist/piece.d.ts.map +1 -0
  47. package/dist/piece.js +38 -0
  48. package/dist/piece.js.map +1 -0
  49. package/dist/props.d.ts +81 -0
  50. package/dist/props.d.ts.map +1 -0
  51. package/dist/props.js +35 -0
  52. package/dist/props.js.map +1 -0
  53. package/dist/text.d.ts +13 -0
  54. package/dist/text.d.ts.map +1 -0
  55. package/dist/text.js +38 -0
  56. package/dist/text.js.map +1 -0
  57. package/package.json +61 -3
package/dist/media.js ADDED
@@ -0,0 +1,27 @@
1
+ import { asUrlString, MEDIA_BRAND, MEDIA_RESOLVER, } from "@allyhub/engine/stage";
2
+ // Media imports (`import shot from "./shot.png"`) compile to media(...) with
3
+ // what the build measured. The URL is
4
+ // not known when the code is built: the stage serves the bytes wherever it
5
+ // likes, so `url` asks the runtime, which also records the read. Turned
6
+ // into a string, a media value is its url (`img.src = logo`).
7
+ const RESOLVER = Symbol.for(MEDIA_RESOLVER);
8
+ /** Installed by the runtime before a piece module loads. */
9
+ export function setMediaResolver(resolve) {
10
+ globalThis[RESOLVER] = resolve;
11
+ }
12
+ /** A media value. Used by the code the build generates for media imports. */
13
+ export function media(info) {
14
+ const out = { [MEDIA_BRAND]: true, ...info };
15
+ Object.defineProperty(out, "url", {
16
+ enumerable: true,
17
+ get() {
18
+ const resolve = globalThis[RESOLVER];
19
+ return resolve ? resolve(info.path) : info.path;
20
+ },
21
+ });
22
+ return asUrlString(out);
23
+ }
24
+ export function isMedia(v) {
25
+ return typeof v === "object" && v !== null && MEDIA_BRAND in v;
26
+ }
27
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,GAEf,MAAM,uBAAuB,CAAC;AAE/B,6EAA6E;AAC7E,sCAAsC;AACtC,2EAA2E;AAC3E,wEAAwE;AACxE,8DAA8D;AAE9D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAI5C,4DAA4D;AAC5D,MAAM,UAAU,gBAAgB,CAAC,OAA6B;IAC3D,UAAsC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;AAC9D,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,KAAK,CAAC,IAA4B;IAChD,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAEzC,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE;QAChC,UAAU,EAAE,IAAI;QAChB,GAAG;YACD,MAAM,OAAO,GAAI,UAAsC,CAAC,QAAQ,CAC1C,CAAC;YACvB,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAClD,CAAC;KACF,CAAC,CAAC;IACH,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,WAAW,IAAI,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { MessageHint } from "@allyhub/engine/stage";
2
+ /**
3
+ * Every message key of the default language → the inputs s.with() takes
4
+ * for it ({name} variables, plural counts). Filled by the generated types.
5
+ */
6
+ export interface Messages {
7
+ }
8
+ /**
9
+ * Every prefix s.list() can read (it has numbered keys under it) → the
10
+ * type of one item. Filled by the generated types.
11
+ */
12
+ export interface MessageLists {
13
+ }
14
+ type Typed = [keyof Messages] extends [never] ? false : true;
15
+ /** A message key: the generated keys, or any string before they exist. */
16
+ export type MessageKey = Typed extends true ? keyof Messages & string : string;
17
+ /** A prefix s.list() reads: the generated prefixes, or any string. */
18
+ export type ListPrefix = [keyof MessageLists] extends [never] ? string : keyof MessageLists & string;
19
+ /** The inputs a key takes in s.with(). */
20
+ export type MessageInputs<K extends string> = K extends keyof Messages ? Messages[K] : Readonly<Record<string, string | number>>;
21
+ /** One item of the list under a prefix. */
22
+ export type ListItem<P extends string> = P extends keyof MessageLists ? MessageLists[P] : string;
23
+ /** ctx.s: the current language's text, with typed keys. */
24
+ export interface MessageReader {
25
+ (key: MessageKey, hint?: MessageHint): string;
26
+ /**
27
+ * Numbered keys under a prefix, in order: `x.0`, `x.1`… Deeper keys make
28
+ * objects (`x.0.name`) and nested lists. The item type comes from the
29
+ * generated types; `s.list<Plan>(prefix)` names it yourself.
30
+ */
31
+ list<T = never, P extends ListPrefix = ListPrefix>(prefix: P, hint?: MessageHint): [T] extends [never] ? ListItem<P>[] : T[];
32
+ /**
33
+ * The text with its inputs: {name} variables filled, and for plurals and
34
+ * selectors the variant they pick.
35
+ */
36
+ with<K extends MessageKey>(key: K, inputs: MessageInputs<K>, hint?: MessageHint): string;
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAezD;;;GAGG;AAEH,MAAM,WAAW,QAAQ;CAAG;AAE5B;;;GAGG;AAEH,MAAM,WAAW,YAAY;CAAG;AAEhC,KAAK,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AAE7D,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG,KAAK,SAAS,IAAI,GAAG,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/E,sEAAsE;AACtE,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,GACzD,MAAM,GACN,MAAM,YAAY,GAAG,MAAM,CAAC;AAEhC,0CAA0C;AAC1C,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,MAAM,QAAQ,GAClE,QAAQ,CAAC,CAAC,CAAC,GACX,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AAE9C,2CAA2C;AAC3C,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,MAAM,YAAY,GACjE,YAAY,CAAC,CAAC,CAAC,GACf,MAAM,CAAC;AAEX,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC9C;;;;OAIG;IACH,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,SAAS,UAAU,GAAG,UAAU,EAC/C,MAAM,EAAE,CAAC,EACT,IAAI,CAAC,EAAE,WAAW,GACjB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAC7C;;;OAGG;IACH,IAAI,CAAC,CAAC,SAAS,UAAU,EACvB,GAAG,EAAE,CAAC,EACN,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,EAAE,WAAW,GACjB,MAAM,CAAC;CACX"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 2D simplex noise at (x, y) for a seed: a smooth value in [-1, 1] that
3
+ * changes over about one unit. Scale the coordinates to change its speed
4
+ * (`noise2D("cam", t * 0.5, 0)` drifts slowly with time t).
5
+ */
6
+ export declare function noise2D(seed: string | number, x: number, y: number): number;
7
+ /** 3D simplex noise for a seed, in [-1, 1]: a 2D field that moves smoothly with z. */
8
+ export declare function noise3D(seed: string | number, x: number, y: number, z: number): number;
9
+ /**
10
+ * 4D simplex noise for a seed, in [-1, 1]. Two of its axes on a circle make
11
+ * a loop: `noise4D(seed, x, y, cos(a) * r, sin(a) * r)` comes back to where
12
+ * it started when `a` turns once.
13
+ */
14
+ export declare function noise4D(seed: string | number, x: number, y: number, z: number, w: number): number;
15
+ //# sourceMappingURL=noise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noise.d.ts","sourceRoot":"","sources":["../src/noise.ts"],"names":[],"mappings":"AA8EA;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAoC3E;AAcD,sFAAsF;AACtF,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,MAAM,CAkCR;AAuBD;;;;GAIG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,MAAM,CAkDR"}
package/dist/noise.js ADDED
@@ -0,0 +1,233 @@
1
+ // Simplex noise in 2, 3 and 4 dimensions, seeded: the same seed gives the
2
+ // same values on every frame and every run, so a render stays deterministic.
3
+ //
4
+ // The algorithm follows Stefan Gustavson's public-domain reference
5
+ // ("Simplex noise demystified", 2005; SimplexNoise.java, 2012), as the
6
+ // simplex-noise package does (https://github.com/jwagner/simplex-noise.js,
7
+ // Copyright (c) 2022 Jonas Wagner, MIT). The API, a seed then coordinates,
8
+ // is after Remotion's @remotion/noise
9
+ // (https://github.com/remotion-dev/remotion/tree/main/packages/noise, MIT),
10
+ // which wraps simplex-noise. Written again here; see NOTICE.
11
+ import { rand } from "./anim.js";
12
+ const F2 = 0.5 * (Math.sqrt(3) - 1);
13
+ const G2 = (3 - Math.sqrt(3)) / 6;
14
+ const F3 = 1 / 3;
15
+ const G3 = 1 / 6;
16
+ const F4 = (Math.sqrt(5) - 1) / 4;
17
+ const G4 = (5 - Math.sqrt(5)) / 20;
18
+ // The 12 midpoints of a cube's edges; 2D uses their x and y.
19
+ const GRAD3 = new Float64Array([
20
+ 1, 1, 0, -1, 1, 0, 1, -1, 0, -1, -1, 0, 1, 0, 1, -1, 0, 1, 1, 0, -1, -1, 0,
21
+ -1, 0, 1, 1, 0, -1, 1, 0, 1, -1, 0, -1, -1,
22
+ ]);
23
+ // The 32 midpoints of a tesseract's edges.
24
+ const GRAD4 = new Float64Array([
25
+ 0, 1, 1, 1, 0, 1, 1, -1, 0, 1, -1, 1, 0, 1, -1, -1, 0, -1, 1, 1, 0, -1, 1, -1,
26
+ 0, -1, -1, 1, 0, -1, -1, -1, 1, 0, 1, 1, 1, 0, 1, -1, 1, 0, -1, 1, 1, 0, -1,
27
+ -1, -1, 0, 1, 1, -1, 0, 1, -1, -1, 0, -1, 1, -1, 0, -1, -1, 1, 1, 0, 1, 1, 1,
28
+ 0, -1, 1, -1, 0, 1, 1, -1, 0, -1, -1, 1, 0, 1, -1, 1, 0, -1, -1, -1, 0, 1, -1,
29
+ -1, 0, -1, 1, 1, 1, 0, 1, 1, -1, 0, 1, -1, 1, 0, 1, -1, -1, 0, -1, 1, 1, 0,
30
+ -1, 1, -1, 0, -1, -1, 1, 0, -1, -1, -1, 0,
31
+ ]);
32
+ const TABLES = new Map();
33
+ const TABLE_CACHE = 32;
34
+ function tableOf(seed) {
35
+ const key = String(seed);
36
+ const found = TABLES.get(key);
37
+ if (found)
38
+ return found;
39
+ const next = rand(seed);
40
+ const p = new Uint8Array(256);
41
+ for (let i = 0; i < 256; i++)
42
+ p[i] = i;
43
+ // Fisher–Yates, driven by the seed.
44
+ for (let i = 255; i > 0; i--) {
45
+ const r = Math.floor(next() * (i + 1));
46
+ const tmp = p[i] ?? 0;
47
+ p[i] = p[r] ?? 0;
48
+ p[r] = tmp;
49
+ }
50
+ const perm = new Uint8Array(512);
51
+ const mod12 = new Uint8Array(512);
52
+ for (let i = 0; i < 512; i++) {
53
+ perm[i] = p[i & 255] ?? 0;
54
+ mod12[i] = (perm[i] ?? 0) % 12;
55
+ }
56
+ const table = { perm, mod12 };
57
+ if (TABLES.size >= TABLE_CACHE) {
58
+ const oldest = TABLES.keys().next();
59
+ if (!oldest.done)
60
+ TABLES.delete(oldest.value);
61
+ }
62
+ TABLES.set(key, table);
63
+ return table;
64
+ }
65
+ // Indices below are always inside the 512-entry tables; `?? 0` only
66
+ // satisfies the type checker.
67
+ /**
68
+ * 2D simplex noise at (x, y) for a seed: a smooth value in [-1, 1] that
69
+ * changes over about one unit. Scale the coordinates to change its speed
70
+ * (`noise2D("cam", t * 0.5, 0)` drifts slowly with time t).
71
+ */
72
+ export function noise2D(seed, x, y) {
73
+ const { perm, mod12 } = tableOf(seed);
74
+ const s = (x + y) * F2;
75
+ const i = Math.floor(x + s);
76
+ const j = Math.floor(y + s);
77
+ const t = (i + j) * G2;
78
+ const x0 = x - (i - t);
79
+ const y0 = y - (j - t);
80
+ const i1 = x0 > y0 ? 1 : 0;
81
+ const j1 = 1 - i1;
82
+ const x1 = x0 - i1 + G2;
83
+ const y1 = y0 - j1 + G2;
84
+ const x2 = x0 - 1 + 2 * G2;
85
+ const y2 = y0 - 1 + 2 * G2;
86
+ const ii = i & 255;
87
+ const jj = j & 255;
88
+ let n = 0;
89
+ let t0 = 0.5 - x0 * x0 - y0 * y0;
90
+ if (t0 > 0) {
91
+ const g = (mod12[ii + (perm[jj] ?? 0)] ?? 0) * 3;
92
+ t0 *= t0;
93
+ n += t0 * t0 * ((GRAD3[g] ?? 0) * x0 + (GRAD3[g + 1] ?? 0) * y0);
94
+ }
95
+ let t1 = 0.5 - x1 * x1 - y1 * y1;
96
+ if (t1 > 0) {
97
+ const g = (mod12[ii + i1 + (perm[jj + j1] ?? 0)] ?? 0) * 3;
98
+ t1 *= t1;
99
+ n += t1 * t1 * ((GRAD3[g] ?? 0) * x1 + (GRAD3[g + 1] ?? 0) * y1);
100
+ }
101
+ let t2 = 0.5 - x2 * x2 - y2 * y2;
102
+ if (t2 > 0) {
103
+ const g = (mod12[ii + 1 + (perm[jj + 1] ?? 0)] ?? 0) * 3;
104
+ t2 *= t2;
105
+ n += t2 * t2 * ((GRAD3[g] ?? 0) * x2 + (GRAD3[g + 1] ?? 0) * y2);
106
+ }
107
+ return 70 * n;
108
+ }
109
+ function corner3(g, x, y, z) {
110
+ let t = 0.6 - x * x - y * y - z * z;
111
+ if (t <= 0)
112
+ return 0;
113
+ const k = g * 3;
114
+ t *= t;
115
+ return (t *
116
+ t *
117
+ ((GRAD3[k] ?? 0) * x + (GRAD3[k + 1] ?? 0) * y + (GRAD3[k + 2] ?? 0) * z));
118
+ }
119
+ /** 3D simplex noise for a seed, in [-1, 1]: a 2D field that moves smoothly with z. */
120
+ export function noise3D(seed, x, y, z) {
121
+ const { perm, mod12 } = tableOf(seed);
122
+ const s = (x + y + z) * F3;
123
+ const i = Math.floor(x + s);
124
+ const j = Math.floor(y + s);
125
+ const k = Math.floor(z + s);
126
+ const t = (i + j + k) * G3;
127
+ const x0 = x - (i - t);
128
+ const y0 = y - (j - t);
129
+ const z0 = z - (k - t);
130
+ let i1, j1, k1, i2, j2, k2;
131
+ if (x0 >= y0) {
132
+ if (y0 >= z0)
133
+ [i1, j1, k1, i2, j2, k2] = [1, 0, 0, 1, 1, 0];
134
+ else if (x0 >= z0)
135
+ [i1, j1, k1, i2, j2, k2] = [1, 0, 0, 1, 0, 1];
136
+ else
137
+ [i1, j1, k1, i2, j2, k2] = [0, 0, 1, 1, 0, 1];
138
+ }
139
+ else if (y0 < z0)
140
+ [i1, j1, k1, i2, j2, k2] = [0, 0, 1, 0, 1, 1];
141
+ else if (x0 < z0)
142
+ [i1, j1, k1, i2, j2, k2] = [0, 1, 0, 0, 1, 1];
143
+ else
144
+ [i1, j1, k1, i2, j2, k2] = [0, 1, 0, 1, 1, 0];
145
+ const ii = i & 255;
146
+ const jj = j & 255;
147
+ const kk = k & 255;
148
+ const g = (a, b, c) => mod12[ii + a + (perm[jj + b + (perm[kk + c] ?? 0)] ?? 0)] ?? 0;
149
+ const n = corner3(g(0, 0, 0), x0, y0, z0) +
150
+ corner3(g(i1, j1, k1), x0 - i1 + G3, y0 - j1 + G3, z0 - k1 + G3) +
151
+ corner3(g(i2, j2, k2), x0 - i2 + 2 * G3, y0 - j2 + 2 * G3, z0 - k2 + 2 * G3) +
152
+ corner3(g(1, 1, 1), x0 - 1 + 3 * G3, y0 - 1 + 3 * G3, z0 - 1 + 3 * G3);
153
+ return 32 * n;
154
+ }
155
+ function corner4(g, x, y, z, w) {
156
+ let t = 0.6 - x * x - y * y - z * z - w * w;
157
+ if (t <= 0)
158
+ return 0;
159
+ const k = g * 4;
160
+ t *= t;
161
+ return (t *
162
+ t *
163
+ ((GRAD4[k] ?? 0) * x +
164
+ (GRAD4[k + 1] ?? 0) * y +
165
+ (GRAD4[k + 2] ?? 0) * z +
166
+ (GRAD4[k + 3] ?? 0) * w));
167
+ }
168
+ /**
169
+ * 4D simplex noise for a seed, in [-1, 1]. Two of its axes on a circle make
170
+ * a loop: `noise4D(seed, x, y, cos(a) * r, sin(a) * r)` comes back to where
171
+ * it started when `a` turns once.
172
+ */
173
+ export function noise4D(seed, x, y, z, w) {
174
+ const { perm } = tableOf(seed);
175
+ const s = (x + y + z + w) * F4;
176
+ const i = Math.floor(x + s);
177
+ const j = Math.floor(y + s);
178
+ const k = Math.floor(z + s);
179
+ const l = Math.floor(w + s);
180
+ const t = (i + j + k + l) * G4;
181
+ const x0 = x - (i - t);
182
+ const y0 = y - (j - t);
183
+ const z0 = z - (k - t);
184
+ const w0 = w - (l - t);
185
+ // Which simplex: each coordinate's rank among the four.
186
+ let rx = 0;
187
+ let ry = 0;
188
+ let rz = 0;
189
+ let rw = 0;
190
+ if (x0 > y0)
191
+ rx++;
192
+ else
193
+ ry++;
194
+ if (x0 > z0)
195
+ rx++;
196
+ else
197
+ rz++;
198
+ if (x0 > w0)
199
+ rx++;
200
+ else
201
+ rw++;
202
+ if (y0 > z0)
203
+ ry++;
204
+ else
205
+ rz++;
206
+ if (y0 > w0)
207
+ ry++;
208
+ else
209
+ rw++;
210
+ if (z0 > w0)
211
+ rz++;
212
+ else
213
+ rw++;
214
+ const ii = i & 255;
215
+ const jj = j & 255;
216
+ const kk = k & 255;
217
+ const ll = l & 255;
218
+ const g = (a, b, c, d) => (perm[ii + a + (perm[jj + b + (perm[kk + c + (perm[ll + d] ?? 0)] ?? 0)] ?? 0)] ?? 0) % 32;
219
+ let n = corner4(g(0, 0, 0, 0), x0, y0, z0, w0);
220
+ for (let step = 1; step <= 3; step++) {
221
+ const rank = 4 - step;
222
+ const a = rx >= rank ? 1 : 0;
223
+ const b = ry >= rank ? 1 : 0;
224
+ const c = rz >= rank ? 1 : 0;
225
+ const d = rw >= rank ? 1 : 0;
226
+ const o = step * G4;
227
+ n += corner4(g(a, b, c, d), x0 - a + o, y0 - b + o, z0 - c + o, w0 - d + o);
228
+ }
229
+ const o = 4 * G4;
230
+ n += corner4(g(1, 1, 1, 1), x0 - 1 + o, y0 - 1 + o, z0 - 1 + o, w0 - 1 + o);
231
+ return 27 * n;
232
+ }
233
+ //# sourceMappingURL=noise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noise.js","sourceRoot":"","sources":["../src/noise.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,6EAA6E;AAC7E,EAAE;AACF,mEAAmE;AACnE,uEAAuE;AACvE,2EAA2E;AAC3E,2EAA2E;AAC3E,sCAAsC;AACtC,4EAA4E;AAC5E,6DAA6D;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACjB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACjB,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAClC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAEnC,6DAA6D;AAC7D,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC;IAC7B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC1E,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CAC3C,CAAC,CAAC;AAEH,2CAA2C;AAC3C,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC;IAC7B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5E,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CA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"}
@@ -0,0 +1,140 @@
1
+ import { type FootageLayer, type FootageOptions, type LayerSpec, type MediaRef, type PartAnchors, type PartSpec, type RoomTone, type SaySpeech, type SoundSpec, type SpeechSpec, type TakeSpeech, type TransitionInput, type WordRef } from "@allyhub/engine/stage";
2
+ export type { BoxKey, FootageBackground, FootageBox, PerOrient, PunchIn, Pullback, Reframe, FootageLayer, FootageOptions, GraphicLayer, LayerSpec, LayerTiming, PartAnchors, PartSpec, Rect, RoomTone, SaySpeech, SoundSpec, SpeechSpec, TakeSpeech, Direction, TransitionChannel, TransitionInput, TransitionPicture, TransitionSpec, TransitionType, WordRef, } from "@allyhub/engine/stage";
3
+ export interface PartOptions {
4
+ /** Unique in the output; stable across combos and formats. */
5
+ key: string;
6
+ /** What the part says: take(file) or say(text). Without it the part is silent. */
7
+ speech?: SpeechSpec;
8
+ /**
9
+ * Seconds, for a part without speech (default 4, or `defaults.part`;
10
+ * on the beat with `music.snap`). A part with speech lasts lead +
11
+ * speech + tail.
12
+ */
13
+ dur?: number;
14
+ /** Seconds before the first word; default 0.2, or `defaults.part`. */
15
+ lead?: number;
16
+ /** Seconds after the last word; default 0.3, or `defaults.part`. */
17
+ tail?: number;
18
+ /**
19
+ * What it shows, back to front: footage(), components, custom(). Each
20
+ * layer is drawn over those listed before it, so a graphic layer before
21
+ * a footage layer is under it, and one between two is between them.
22
+ */
23
+ layers?: LayerSpec[];
24
+ /**
25
+ * The still moment (covers, sheets, pages): a word reference, seconds
26
+ * from the part's start, or a function of its length. Default: 0.4 s
27
+ * before its end.
28
+ */
29
+ still?: WordRef | ((dur: number) => number);
30
+ /** Labels for the matrix's rules (P2). */
31
+ tags?: string[];
32
+ /**
33
+ * J and L cuts: `before` seconds of the speech play under the previous
34
+ * part's picture, `after` seconds under the next part's.
35
+ */
36
+ overlap?: {
37
+ before?: number;
38
+ after?: number;
39
+ };
40
+ /**
41
+ * Sound effects: `[{ at: "free", sound: "pop" }, { at: 1.2, sound:
42
+ * whoosh, gainDb: -4 }]`, each at a word reference or seconds, a name of
43
+ * the look's sounds (or the built-in whoosh, tick, pop) or an audio
44
+ * file. Nothing plays unless it is placed.
45
+ */
46
+ sounds?: SoundSpec[];
47
+ /**
48
+ * Named moments of the part, in seconds from its start: `{ press: 7.1,
49
+ * map: [9.6, 13.4] }`, a point or a stretch [from, to]. Wherever a word
50
+ * reference goes, "@press" is the point, "@map" and "@/map" the
51
+ * stretch's start and end ("@press+0.2" shifts one); `ctx.at("@press")`
52
+ * reads one in a layer. A part needs no speech to have them; allyhub
53
+ * timeline prints where each landed, and allyhub frames --at takes them.
54
+ */
55
+ anchors?: PartAnchors;
56
+ /**
57
+ * How the part comes in from the part before it; without it, a cut.
58
+ * `"fade"`, `"dip"` (through a colour), `"slide"`, `"push"`, `"wipe"`,
59
+ * `"zoom"`, or the type with its options: `{ type: "push", direction:
60
+ * "up", dur: 0.5 }`; `{ type: "custom", out, in }` gives the channels
61
+ * directly. The window (`dur`, default 0.4 s) lies across the join,
62
+ * `split` of it (default half) before; the parts keep their lengths.
63
+ * Outside its own time a part's graphics hold and its footage runs on.
64
+ * The first part's is ignored, and so is a paged output's. Pictures
65
+ * only: place a sound with `sounds`.
66
+ */
67
+ transition?: TransitionInput;
68
+ }
69
+ /** A part of a video, or a page of a paged output. */
70
+ export declare function part(opts: PartOptions): PartSpec;
71
+ /** A take, narrowed with range() or saying(). */
72
+ export interface Take extends TakeSpeech {
73
+ /**
74
+ * The stretch from the first words `from` to the end of the first `to`
75
+ * after them (case and punctuation ignored); without `to`, to the end.
76
+ */
77
+ range(from: string, to?: string): Take;
78
+ /**
79
+ * The stretch that says this line (usually s(key)): found by its words,
80
+ * misheard words tolerated; the line's spelling is the caption. Each
81
+ * part that takes the same file searches after the previous one's
82
+ * stretch.
83
+ */
84
+ saying(text: string): Take;
85
+ /**
86
+ * A cut list: a JSON file relative to the piece (`./edits/<name>.json`)
87
+ * removing word ranges, sounds and long pauses; the preview's
88
+ * transcript editor writes it. The file may not exist yet.
89
+ */
90
+ edits(path: string): Take;
91
+ /**
92
+ * Reduces the noise in its sound by `db` (default 12) with ffmpeg's FFT
93
+ * denoiser, in the render and the preview (as recorded until the preview
94
+ * has made the denoised sound).
95
+ */
96
+ denoise(db?: number): Take;
97
+ /**
98
+ * The room tone that fills a part's lead and tail where the take has no
99
+ * silence of its own around the part's words: `false` for none, or
100
+ * `{ from, to, match, gainDb, limitDb, fade }`, each optional. `from`
101
+ * and `to` are the stretch of the file (seconds) to loop; default the
102
+ * quietest steady stretch the build measured. Each fill's level is
103
+ * matched to the floor of the take's kept sound beside the join it
104
+ * meets (at most `limitDb`, default 6 dB, either way) and cross-fades
105
+ * with it over `fade` seconds (default 0.04): `match: false` plays it
106
+ * as recorded, `gainDb` sets its gain yourself.
107
+ */
108
+ roomTone(tone: false | RoomTone): Take;
109
+ }
110
+ /**
111
+ * Speech from a recording, audio or video, with its word times beside it
112
+ * (`<name>.words.json`: allyhub transcribe <file> makes it). An import, or a
113
+ * path relative to the piece's file.
114
+ */
115
+ export declare function take(file: MediaRef): Take;
116
+ export interface SayOptions {
117
+ /** The voice tool's voice id. */
118
+ voice?: string;
119
+ /** The voice tool; default tts-elevenlabs-multilingual-v2. */
120
+ tool?: string;
121
+ /**
122
+ * More input for the voice tool, as plain JSON (`allyhub tools describe
123
+ * <tool>` lists what it takes), such as { stability: 0.4 }. Passed with
124
+ * the text and voice; part of the file's hash, so changing it makes a
125
+ * new file.
126
+ */
127
+ params?: Record<string, unknown>;
128
+ }
129
+ /**
130
+ * Text to speech: `allyhub voice generate` makes the file
131
+ * (assets/media/gen/say/<hash>) with its words; the check reports a say without
132
+ * one (AK-T002). Text from s(key) is read aloud as the message's `speak`.
133
+ */
134
+ export declare function say(text: string, opts?: SayOptions): SaySpeech;
135
+ /**
136
+ * A video on the part: footage("./broll.mp4", { at: "inbox", dur: 1.5 }).
137
+ * Without a file it is the part's own take, in sync with its speech.
138
+ */
139
+ export declare function footage(file?: MediaRef | FootageOptions, opts?: FootageOptions): FootageLayer;
140
+ //# sourceMappingURL=parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../src/parts.ts"],"names":[],"mappings":"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"}