ambient-display 1.1.0 → 1.1.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.
Files changed (162) hide show
  1. package/build/client/_app/immutable/assets/0.Dl9__I4E.css +1 -0
  2. package/build/client/_app/immutable/assets/0.Dl9__I4E.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.Dl9__I4E.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/2.BtzFOBtk.css +1 -0
  5. package/build/client/_app/immutable/assets/2.BtzFOBtk.css.br +0 -0
  6. package/build/client/_app/immutable/assets/2.BtzFOBtk.css.gz +0 -0
  7. package/build/client/_app/immutable/assets/3.BvcZlbFP.css +1 -0
  8. package/build/client/_app/immutable/assets/3.BvcZlbFP.css.br +0 -0
  9. package/build/client/_app/immutable/assets/3.BvcZlbFP.css.gz +0 -0
  10. package/build/client/_app/immutable/assets/LoadingIndicator.D0m6rSKQ.css +1 -0
  11. package/build/client/_app/immutable/assets/LoadingIndicator.D0m6rSKQ.css.br +0 -0
  12. package/build/client/_app/immutable/assets/LoadingIndicator.D0m6rSKQ.css.gz +0 -0
  13. package/build/client/_app/immutable/assets/PlayingTracker.9uM5nyWg.css +1 -0
  14. package/build/client/_app/immutable/assets/PlayingTracker.9uM5nyWg.css.br +0 -0
  15. package/build/client/_app/immutable/assets/PlayingTracker.9uM5nyWg.css.gz +0 -0
  16. package/build/client/_app/immutable/assets/_layout.Dl9__I4E.css +1 -0
  17. package/build/client/_app/immutable/assets/_layout.Dl9__I4E.css.br +0 -0
  18. package/build/client/_app/immutable/assets/_layout.Dl9__I4E.css.gz +0 -0
  19. package/build/client/_app/immutable/assets/_page.BtzFOBtk.css +1 -0
  20. package/build/client/_app/immutable/assets/_page.BtzFOBtk.css.br +0 -0
  21. package/build/client/_app/immutable/assets/_page.BtzFOBtk.css.gz +0 -0
  22. package/build/client/_app/immutable/assets/_page.BvcZlbFP.css +1 -0
  23. package/build/client/_app/immutable/assets/_page.BvcZlbFP.css.br +0 -0
  24. package/build/client/_app/immutable/assets/_page.BvcZlbFP.css.gz +0 -0
  25. package/build/client/_app/immutable/chunks/LoadingIndicator.COVTk436.js +1 -0
  26. package/build/client/_app/immutable/chunks/LoadingIndicator.COVTk436.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/LoadingIndicator.COVTk436.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/PlayingTracker.Cymhk9j5.js +5 -0
  29. package/build/client/_app/immutable/chunks/PlayingTracker.Cymhk9j5.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/PlayingTracker.Cymhk9j5.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/disclose-version.N57b1q78.js +1 -0
  32. package/build/client/_app/immutable/chunks/disclose-version.N57b1q78.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/disclose-version.N57b1q78.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/entry.CTcSu7Oh.js +3 -0
  35. package/build/client/_app/immutable/chunks/entry.CTcSu7Oh.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/entry.CTcSu7Oh.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/index-client.DV07uIiZ.js +1 -0
  38. package/build/client/_app/immutable/chunks/index-client.DV07uIiZ.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/index-client.DV07uIiZ.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/index.DFULH2AN.js +1 -0
  41. package/build/client/_app/immutable/chunks/index.DFULH2AN.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/index.DFULH2AN.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/index.DLR8Bvs6.js +4 -0
  44. package/build/client/_app/immutable/chunks/index.DLR8Bvs6.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/index.DLR8Bvs6.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/legacy.DZgMwYuQ.js +1 -0
  47. package/build/client/_app/immutable/chunks/legacy.DZgMwYuQ.js.br +0 -0
  48. package/build/client/_app/immutable/chunks/legacy.DZgMwYuQ.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/props.DYfFZGja.js +1 -0
  50. package/build/client/_app/immutable/chunks/props.DYfFZGja.js.br +0 -0
  51. package/build/client/_app/immutable/chunks/props.DYfFZGja.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/snippet.BVSCguOu.js +1 -0
  53. package/build/client/_app/immutable/chunks/snippet.BVSCguOu.js.br +0 -0
  54. package/build/client/_app/immutable/chunks/snippet.BVSCguOu.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/this.EZLWgc5v.js +1 -0
  56. package/build/client/_app/immutable/chunks/this.EZLWgc5v.js.br +0 -0
  57. package/build/client/_app/immutable/chunks/this.EZLWgc5v.js.gz +0 -0
  58. package/build/client/_app/immutable/chunks/utils.BXcQV2KO.js +1 -0
  59. package/build/client/_app/immutable/chunks/utils.BXcQV2KO.js.br +0 -0
  60. package/build/client/_app/immutable/chunks/utils.BXcQV2KO.js.gz +0 -0
  61. package/build/client/_app/immutable/entry/app.DHMJZPqS.js +2 -0
  62. package/build/client/_app/immutable/entry/app.DHMJZPqS.js.br +0 -0
  63. package/build/client/_app/immutable/entry/app.DHMJZPqS.js.gz +0 -0
  64. package/build/client/_app/immutable/entry/start.BGJKS9mR.js +1 -0
  65. package/build/client/_app/immutable/entry/start.BGJKS9mR.js.br +2 -0
  66. package/build/client/_app/immutable/entry/start.BGJKS9mR.js.gz +0 -0
  67. package/build/client/_app/immutable/nodes/0.DaJoi3FK.js +2 -0
  68. package/build/client/_app/immutable/nodes/0.DaJoi3FK.js.br +0 -0
  69. package/build/client/_app/immutable/nodes/0.DaJoi3FK.js.gz +0 -0
  70. package/build/client/_app/immutable/nodes/1.0EwG4xPT.js +1 -0
  71. package/build/client/_app/immutable/nodes/1.0EwG4xPT.js.br +0 -0
  72. package/build/client/_app/immutable/nodes/1.0EwG4xPT.js.gz +0 -0
  73. package/build/client/_app/immutable/nodes/2.CIcrK0Mf.js +1 -0
  74. package/build/client/_app/immutable/nodes/2.CIcrK0Mf.js.br +0 -0
  75. package/build/client/_app/immutable/nodes/2.CIcrK0Mf.js.gz +0 -0
  76. package/build/client/_app/immutable/nodes/3.vzk8SJSG.js +1 -0
  77. package/build/client/_app/immutable/nodes/3.vzk8SJSG.js.br +0 -0
  78. package/build/client/_app/immutable/nodes/3.vzk8SJSG.js.gz +0 -0
  79. package/build/client/_app/version.json +1 -0
  80. package/build/client/_app/version.json.br +0 -0
  81. package/build/client/_app/version.json.gz +0 -0
  82. package/build/client/manifest.json.br +0 -0
  83. package/build/client/manifest.json.gz +0 -0
  84. package/build/env.js +45 -0
  85. package/build/handler.js +1375 -0
  86. package/build/index.js +334 -0
  87. package/build/server/chunks/0-D_yciAvo.js +91 -0
  88. package/build/server/chunks/0-D_yciAvo.js.map +1 -0
  89. package/build/server/chunks/1-BA-qTHOy.js +9 -0
  90. package/build/server/chunks/1-BA-qTHOy.js.map +1 -0
  91. package/build/server/chunks/2-DPsIhdeI.js +9 -0
  92. package/build/server/chunks/2-DPsIhdeI.js.map +1 -0
  93. package/build/server/chunks/3-CZREXwZu.js +9 -0
  94. package/build/server/chunks/3-CZREXwZu.js.map +1 -0
  95. package/build/server/chunks/LoadingIndicator-CTUFEPkL.js +10 -0
  96. package/build/server/chunks/LoadingIndicator-CTUFEPkL.js.map +1 -0
  97. package/build/server/chunks/LoadingIndicator.svelte_svelte_type_style_lang-CVdBHA1v.js +172 -0
  98. package/build/server/chunks/LoadingIndicator.svelte_svelte_type_style_lang-CVdBHA1v.js.map +1 -0
  99. package/build/server/chunks/PlayingTracker-BIq1bdv_.js +18 -0
  100. package/build/server/chunks/PlayingTracker-BIq1bdv_.js.map +1 -0
  101. package/build/server/chunks/_layout.svelte-BoFI04Ng.js +24 -0
  102. package/build/server/chunks/_layout.svelte-BoFI04Ng.js.map +1 -0
  103. package/build/server/chunks/_page.svelte-C3Mw7ZhL.js +115 -0
  104. package/build/server/chunks/_page.svelte-C3Mw7ZhL.js.map +1 -0
  105. package/build/server/chunks/_page.svelte-CzGyTA7b.js +368 -0
  106. package/build/server/chunks/_page.svelte-CzGyTA7b.js.map +1 -0
  107. package/build/server/chunks/error.svelte-BZE1ioPX.js +116 -0
  108. package/build/server/chunks/error.svelte-BZE1ioPX.js.map +1 -0
  109. package/build/server/chunks/exports-DAjI6ZSp.js +125 -0
  110. package/build/server/chunks/exports-DAjI6ZSp.js.map +1 -0
  111. package/build/server/chunks/index2-BA59f76P.js +1214 -0
  112. package/build/server/chunks/index2-BA59f76P.js.map +1 -0
  113. package/build/server/index.js +4868 -0
  114. package/build/server/index.js.map +1 -0
  115. package/build/server/manifest.js +50 -0
  116. package/build/server/manifest.js.map +1 -0
  117. package/build/shims.js +32 -0
  118. package/package.json +9 -2
  119. package/server/index.js +4 -0
  120. package/server/spotify_auth.json +1 -0
  121. package/.prettierignore +0 -4
  122. package/.prettierrc +0 -17
  123. package/CHANGELOG.md +0 -34
  124. package/env.template +0 -2
  125. package/eslint.config.js +0 -24
  126. package/jsconfig.json +0 -19
  127. package/screenshot.png +0 -0
  128. package/src/app.d.ts +0 -13
  129. package/src/app.html +0 -12
  130. package/src/lib/actions/qr.svelte.js +0 -23
  131. package/src/lib/comms.js +0 -25
  132. package/src/lib/components/AuthenticateTrigger.svelte +0 -74
  133. package/src/lib/components/Controls.svelte +0 -91
  134. package/src/lib/components/ImageLoad.svelte +0 -79
  135. package/src/lib/components/LoadingIndicator.svelte +0 -75
  136. package/src/lib/components/MediaItem.svelte +0 -75
  137. package/src/lib/components/PlayingTracker.svelte +0 -94
  138. package/src/lib/components/ResultsList.svelte +0 -80
  139. package/src/lib/components/Toast/Item.svelte +0 -71
  140. package/src/lib/components/Toast/Manager.svelte +0 -34
  141. package/src/lib/icons/disc.svg +0 -1
  142. package/src/lib/index.js +0 -1
  143. package/src/lib/store.js +0 -146
  144. package/src/lib/styles.scss +0 -166
  145. package/src/lib/toast.js +0 -57
  146. package/src/lib/utils.js +0 -723
  147. package/src/routes/+layout.server.js +0 -25
  148. package/src/routes/+layout.svelte +0 -72
  149. package/src/routes/+page.svelte +0 -381
  150. package/src/routes/player/+page.svelte +0 -294
  151. package/svelte.config.js +0 -19
  152. package/tools/BuildManifest.js +0 -87
  153. package/vite.config.js +0 -46
  154. /package/{static → build/client}/favicon.ico +0 -0
  155. /package/{static → build/client}/favicon.png +0 -0
  156. /package/{static → build/client}/icons/144.favicon.png +0 -0
  157. /package/{static → build/client}/icons/168.favicon.png +0 -0
  158. /package/{static → build/client}/icons/192.favicon.png +0 -0
  159. /package/{static → build/client}/icons/48.favicon.png +0 -0
  160. /package/{static → build/client}/icons/72.favicon.png +0 -0
  161. /package/{static → build/client}/icons/96.favicon.png +0 -0
  162. /package/{static → build/client}/manifest.json +0 -0
@@ -0,0 +1,50 @@
1
+ const manifest = (() => {
2
+ function __memo(fn) {
3
+ let value;
4
+ return () => value ??= (value = fn());
5
+ }
6
+
7
+ return {
8
+ appDir: "_app",
9
+ appPath: "_app",
10
+ assets: new Set(["favicon.ico","favicon.png","icons/144.favicon.png","icons/168.favicon.png","icons/192.favicon.png","icons/48.favicon.png","icons/72.favicon.png","icons/96.favicon.png","manifest.json"]),
11
+ mimeTypes: {".png":"image/png",".json":"application/json"},
12
+ _: {
13
+ client: {"start":"_app/immutable/entry/start.BGJKS9mR.js","app":"_app/immutable/entry/app.DHMJZPqS.js","imports":["_app/immutable/entry/start.BGJKS9mR.js","_app/immutable/chunks/entry.CTcSu7Oh.js","_app/immutable/chunks/utils.BXcQV2KO.js","_app/immutable/chunks/index.DFULH2AN.js","_app/immutable/chunks/index-client.DV07uIiZ.js","_app/immutable/entry/app.DHMJZPqS.js","_app/immutable/chunks/utils.BXcQV2KO.js","_app/immutable/chunks/disclose-version.N57b1q78.js","_app/immutable/chunks/props.DYfFZGja.js","_app/immutable/chunks/this.EZLWgc5v.js","_app/immutable/chunks/index-client.DV07uIiZ.js"],"stylesheets":[],"fonts":[],"uses_env_dynamic_public":false},
14
+ nodes: [
15
+ __memo(() => import('./chunks/0-D_yciAvo.js')),
16
+ __memo(() => import('./chunks/1-BA-qTHOy.js')),
17
+ __memo(() => import('./chunks/2-DPsIhdeI.js')),
18
+ __memo(() => import('./chunks/3-CZREXwZu.js'))
19
+ ],
20
+ routes: [
21
+ {
22
+ id: "/",
23
+ pattern: /^\/$/,
24
+ params: [],
25
+ page: { layouts: [0,], errors: [1,], leaf: 2 },
26
+ endpoint: null
27
+ },
28
+ {
29
+ id: "/player",
30
+ pattern: /^\/player\/?$/,
31
+ params: [],
32
+ page: { layouts: [0,], errors: [1,], leaf: 3 },
33
+ endpoint: null
34
+ }
35
+ ],
36
+ matchers: async () => {
37
+
38
+ return { };
39
+ },
40
+ server_assets: {}
41
+ }
42
+ }
43
+ })();
44
+
45
+ const prerendered = new Set([]);
46
+
47
+ const base = "";
48
+
49
+ export { base, manifest, prerendered };
50
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"favicon.ico\",\"favicon.png\",\"icons/144.favicon.png\",\"icons/168.favicon.png\",\"icons/192.favicon.png\",\"icons/48.favicon.png\",\"icons/72.favicon.png\",\"icons/96.favicon.png\",\"manifest.json\"]),\n\tmimeTypes: {\".png\":\"image/png\",\".json\":\"application/json\"},\n\t_: {\n\t\tclient: {\"start\":\"_app/immutable/entry/start.BGJKS9mR.js\",\"app\":\"_app/immutable/entry/app.DHMJZPqS.js\",\"imports\":[\"_app/immutable/entry/start.BGJKS9mR.js\",\"_app/immutable/chunks/entry.CTcSu7Oh.js\",\"_app/immutable/chunks/utils.BXcQV2KO.js\",\"_app/immutable/chunks/index.DFULH2AN.js\",\"_app/immutable/chunks/index-client.DV07uIiZ.js\",\"_app/immutable/entry/app.DHMJZPqS.js\",\"_app/immutable/chunks/utils.BXcQV2KO.js\",\"_app/immutable/chunks/disclose-version.N57b1q78.js\",\"_app/immutable/chunks/props.DYfFZGja.js\",\"_app/immutable/chunks/this.EZLWgc5v.js\",\"_app/immutable/chunks/index-client.DV07uIiZ.js\"],\"stylesheets\":[],\"fonts\":[],\"uses_env_dynamic_public\":false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js'))\n\t\t],\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/player\",\n\t\t\t\tpattern: /^\\/player\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"AAAY,MAAC,QAAQ,GAAG,CAAC,MAAM;AAC/B,SAAS,MAAM,CAAC,EAAE,EAAE;AACpB,CAAC,IAAI,KAAK;AACV,CAAC,OAAO,MAAM,KAAK,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;AACtC;;AAEA,OAAO;AACP,CAAC,MAAM,EAAE,MAAM;AACf,CAAC,OAAO,EAAE,MAAM;AAChB,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;AAC5M,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAC3D,CAAC,CAAC,EAAE;AACJ,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,KAAK,CAAC,sCAAsC,CAAC,SAAS,CAAC,CAAC,wCAAwC,CAAC,yCAAyC,CAAC,yCAAyC,CAAC,yCAAyC,CAAC,gDAAgD,CAAC,sCAAsC,CAAC,yCAAyC,CAAC,oDAAoD,CAAC,yCAAyC,CAAC,wCAAwC,CAAC,gDAAgD,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC;AACnpB,EAAE,KAAK,EAAE;AACT,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC;AACtC,GAAG;AACH,EAAE,MAAM,EAAE;AACV,GAAG;AACH,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,OAAO,EAAE,eAAe;AAC5B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd;AACA,GAAG;AACH,EAAE,QAAQ,EAAE,YAAY;AACxB;AACA,GAAG,OAAO,IAAI;AACd,GAAG;AACH,EAAE,aAAa,EAAE;AACjB;AACA;AACA,CAAC;;AAEW,MAAC,WAAW,GAAG,IAAI,GAAG,CAAC,EAAE;;AAEzB,MAAC,IAAI,GAAG;;;;"}
package/build/shims.js ADDED
@@ -0,0 +1,32 @@
1
+ import buffer from 'node:buffer';
2
+ import { webcrypto } from 'node:crypto';
3
+
4
+ // `buffer.File` was added in Node 18.13.0 while the `File` global was added in Node 20.0.0
5
+ const File = /** @type {import('node:buffer') & { File?: File}} */ (buffer).File;
6
+
7
+ /** @type {Record<string, any>} */
8
+ const globals = {
9
+ crypto: webcrypto,
10
+ File
11
+ };
12
+
13
+ // exported for dev/preview and node environments
14
+ /**
15
+ * Make various web APIs available as globals:
16
+ * - `crypto`
17
+ * - `File`
18
+ */
19
+ function installPolyfills() {
20
+ for (const name in globals) {
21
+ if (name in globalThis) continue;
22
+
23
+ Object.defineProperty(globalThis, name, {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: globals[name]
28
+ });
29
+ }
30
+ }
31
+
32
+ installPolyfills();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ambient-display",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "Like a spotify jam but much worse, but also much better. If you need it, you'll love it.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -17,8 +17,15 @@
17
17
  "format": "prettier --write .",
18
18
  "lint": "prettier --check . && eslint .",
19
19
  "release": "standard-version",
20
- "release:publish": "npm run release && npm publish"
20
+ "release:publish": "npm run build && npm run release && npm publish"
21
21
  },
22
+ "files": [
23
+ "build/*",
24
+ "server/*",
25
+ "ambient.config.js.template",
26
+ "README.md",
27
+ ".nvmrc"
28
+ ],
22
29
  "devDependencies": {
23
30
  "@eslint/compat": "^1.2.3",
24
31
  "@poppanator/sveltekit-svg": "^5.0.0",
package/server/index.js CHANGED
@@ -18,6 +18,10 @@ import { CommandHistory } from './history.js';
18
18
 
19
19
  const URL = `${OPTIONS.origin}:${OPTIONS.port}`;
20
20
 
21
+ if (OPTIONS.verbose) {
22
+ console.log(OPTIONS);
23
+ }
24
+
21
25
  const app = express();
22
26
  const server = createServer(app);
23
27
  const io = new Server(server, {
@@ -0,0 +1 @@
1
+ {"refresh_token":"AQBAFqcupbCx89_PRsBTqVLMh_-UcwelJnu1FNA1XVLGZPZO9MZIQcfMaaAC_WseRuahnHFufZYJ8tuiT9_DN8xFAq353b0LhWhlWM51nD-LW6ioGM0rU4SJPtyJrTLqliU","access_token":"BQCGuzKADp9mNfAXWhjZXDQPM0mIT-EyII37V41DTzImiVCHrmP3gwhNVccbyHYoHJp5yw-Md0cNjjts2NKx4ZmkgnOu9i7Rh1cYgClbIvITOZe1osYogkQkEdBJeC5dA5EJMkZwdI7UNO4lzEe2nf7nzLX1r2mwTtovt4ekGmkjEsZG6GIzDFbN912vGbxBKRcHYy0R_8LgpRfJgsrdHrpRkuIYUYqHvL61kA","token_type":"Bearer","expires_in":3600,"scope":"user-modify-playback-state user-read-playback-state user-read-currently-playing user-read-email user-read-private"}
package/.prettierignore DELETED
@@ -1,4 +0,0 @@
1
- # Package Managers
2
- package-lock.json
3
- pnpm-lock.yaml
4
- yarn.lock
package/.prettierrc DELETED
@@ -1,17 +0,0 @@
1
- {
2
- "useTabs": true,
3
- "singleQuote": true,
4
- "trailingComma": "none",
5
- "printWidth": 100,
6
- "plugins": [
7
- "prettier-plugin-svelte"
8
- ],
9
- "overrides": [
10
- {
11
- "files": "*.svelte",
12
- "options": {
13
- "parser": "svelte"
14
- }
15
- }
16
- ]
17
- }
package/CHANGELOG.md DELETED
@@ -1,34 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
-
5
- ## 1.1.0 (2025-03-04)
6
-
7
-
8
- ### Features
9
-
10
- * added cursor hide ([928c7f8](https://github.com/jthawme/ambient/commit/928c7f8aef867b947d77f198a1bda916ff13167b))
11
- * added fleshed out adding panel ([0ebbbc2](https://github.com/jthawme/ambient/commit/0ebbbc2189599a94f55ecadcdff18909e1c1dc28))
12
- * added history system and converted errors ([30977fc](https://github.com/jthawme/ambient/commit/30977fc9444738d7adbd8597656411e2154b9a4f))
13
- * added screen lock to player ([11f5275](https://github.com/jthawme/ambient/commit/11f52751524d7de83b22ba84887cd330b55b8dda))
14
- * added sonos fallback plugin ([0acefd8](https://github.com/jthawme/ambient/commit/0acefd8138765705c88c5e0b0c5cc3ad393549b9))
15
- * introduced events ecosystem and config file injection ([c3ade28](https://github.com/jthawme/ambient/commit/c3ade28661d4709e72f4f1f5505c4564712fe773))
16
- * removed plugins from root repo ([0b1528e](https://github.com/jthawme/ambient/commit/0b1528e2790cd9f70e71505780317ca19b0ae83f))
17
- * sewn up the loop of built and running flows ([7b3f21a](https://github.com/jthawme/ambient/commit/7b3f21acce980d42c0e79d0f1bcea2bb5c410c44))
18
- * switched to a centralised polling system first, to protect against rate limits ([3f33865](https://github.com/jthawme/ambient/commit/3f33865d6b8f528f7e69d6cffd54161f6c5c5d29))
19
- * updated eco system ([de42b2b](https://github.com/jthawme/ambient/commit/de42b2b5d6341bac2c987c3d48cfdbd0cc8d3791))
20
-
21
-
22
- ### Bug Fixes
23
-
24
- * added attempt at memoization for rate limiting ([9530833](https://github.com/jthawme/ambient/commit/95308335f7eb740de69ef78c542e821a5823f87e))
25
- * added run script as seperate ([46d90ed](https://github.com/jthawme/ambient/commit/46d90edac3fafb18e8dc4be1c985bf13ad34baa2))
26
- * backed off on certain endpoints ([d95b69c](https://github.com/jthawme/ambient/commit/d95b69c8466ce12cdae871bec2911009b7258383))
27
- * built in messaging to spotify errors ([0cc61cb](https://github.com/jthawme/ambient/commit/0cc61cb5be2b902df259eb11d6012e60e4a7307c))
28
- * continued to make the project less reliant on local install ([22060cc](https://github.com/jthawme/ambient/commit/22060cc4f3d84ebe7c47e328182b617cf7c7ea68))
29
- * fixed issue with persisting sdk ([0f7fc23](https://github.com/jthawme/ambient/commit/0f7fc2309ec9a9c790060687af562cd2c5293eb2))
30
- * fixed reauth strategy class ([cfa328d](https://github.com/jthawme/ambient/commit/cfa328dc1599c397ff85b2319800dce7d628283b))
31
- * is main check fix ([77d087d](https://github.com/jthawme/ambient/commit/77d087d4dc68428e875d01c0b0259ecd47b2d681))
32
- * protect the polling async function ([e5282b6](https://github.com/jthawme/ambient/commit/e5282b60050fc217e6d4861988cc603fbd594696))
33
- * reintroduced package lock for npm ci ([fb906cc](https://github.com/jthawme/ambient/commit/fb906cccb8fd7c6856e1f2af28bd7cc429f8d236))
34
- * small fixes ([0fc9688](https://github.com/jthawme/ambient/commit/0fc9688dc24629b47aaf96f27087011032fdaa6c))
package/env.template DELETED
@@ -1,2 +0,0 @@
1
- SPOTIFY_CLIENT_ID=
2
- SPOTIFY_CLIENT_SECRET=
package/eslint.config.js DELETED
@@ -1,24 +0,0 @@
1
- import prettier from "eslint-config-prettier";
2
- import js from '@eslint/js';
3
- import { includeIgnoreFile } from '@eslint/compat';
4
- import svelte from 'eslint-plugin-svelte';
5
- import globals from 'globals';
6
- import { fileURLToPath } from 'node:url';
7
- const gitignorePath = fileURLToPath(new URL("./.gitignore", import.meta.url));
8
-
9
- /** @type {import('eslint').Linter.Config[]} */
10
- export default [
11
- includeIgnoreFile(gitignorePath),
12
- js.configs.recommended,
13
- ...svelte.configs["flat/recommended"],
14
- prettier,
15
- ...svelte.configs['flat/prettier'],
16
- {
17
- languageOptions: {
18
- globals: {
19
- ...globals.browser,
20
- ...globals.node
21
- }
22
- }
23
- }
24
- ];
package/jsconfig.json DELETED
@@ -1,19 +0,0 @@
1
- {
2
- "extends": "./.svelte-kit/tsconfig.json",
3
- "compilerOptions": {
4
- "allowJs": true,
5
- "checkJs": true,
6
- "esModuleInterop": true,
7
- "forceConsistentCasingInFileNames": true,
8
- "resolveJsonModule": true,
9
- "skipLibCheck": true,
10
- "sourceMap": true,
11
- "strict": true,
12
- "moduleResolution": "bundler"
13
- }
14
- // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
15
- // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
16
- //
17
- // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
18
- // from the referenced tsconfig.json - TypeScript does not merge them in
19
- }
package/screenshot.png DELETED
Binary file
package/src/app.d.ts DELETED
@@ -1,13 +0,0 @@
1
- // See https://svelte.dev/docs/kit/types#app.d.ts
2
- // for information about these interfaces
3
- declare global {
4
- namespace App {
5
- // interface Error {}
6
- // interface Locals {}
7
- // interface PageData {}
8
- // interface PageState {}
9
- // interface Platform {}
10
- }
11
- }
12
-
13
- export {};
package/src/app.html DELETED
@@ -1,12 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8" />
5
- <link rel="icon" href="%sveltekit.assets%/favicon.png" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1" />
7
- %sveltekit.head%
8
- </head>
9
- <body data-sveltekit-preload-data="hover">
10
- <div style="display: contents">%sveltekit.body%</div>
11
- </body>
12
- </html>
@@ -1,23 +0,0 @@
1
- import QRCode from 'qrcode-svg';
2
-
3
- export const qr = (node, { url, ...rest }) => {
4
- // the node has been mounted in the DOM
5
-
6
- $effect(() => {
7
- var svg = new QRCode({
8
- color: 'currentColor',
9
- background: 'transparent',
10
- padding: 0,
11
- join: true,
12
- container: 'svg-viewbox',
13
- ...rest,
14
- content: url
15
- }).svg();
16
-
17
- node.innerHTML = svg;
18
-
19
- return () => {
20
- node.innerHTML = '';
21
- };
22
- });
23
- };
package/src/lib/comms.js DELETED
@@ -1,25 +0,0 @@
1
- import { io, Socket } from 'socket.io-client';
2
- import { derived } from 'svelte/store';
3
- import { address, settled } from './store';
4
-
5
- /** */
6
- const previous = {
7
- /** @type {Socket | null} */
8
- current: null
9
- };
10
-
11
- export const socket = derived([address, settled], ([$address, $settled]) => {
12
- if (!$settled) {
13
- return null;
14
- }
15
-
16
- const i = io($address.endpoint);
17
-
18
- if (previous.current) {
19
- previous.current.disconnect();
20
- }
21
-
22
- previous.current = i;
23
-
24
- return i;
25
- });
@@ -1,74 +0,0 @@
1
- <script>
2
- import { qr } from '$lib/actions/qr.svelte';
3
- import { address } from '$lib/store';
4
- </script>
5
-
6
- <div class="content">
7
- <div class="options">
8
- <div class="options-left">
9
- <h1>This instance is not authenticated</h1>
10
- <p>
11
- {$address.server('/spotify/start')}
12
- <a href={$address.server('/spotify/start')}>Authenticate</a> or scan qr to authenticate via device
13
- </p>
14
- </div>
15
- <div class="options-right">
16
- <span class="qr" use:qr={{ url: $address.server('/spotify/start') }}></span>
17
- </div>
18
- <div class="options-bottom">
19
- <p class="size-small-1 color-2">
20
- Make sure that <em>{$address.server('/spotify/token')}</em> is added as a Redirect URI in your
21
- spotify app dashboard
22
- </p>
23
- </div>
24
- </div>
25
- </div>
26
-
27
- <style lang="scss">
28
- .content {
29
- position: absolute;
30
-
31
- top: 50%;
32
- left: 50%;
33
-
34
- width: calc(100% - (var(--spacing-large) * 2));
35
- max-width: 500px;
36
- padding: var(--spacing-large);
37
-
38
- transform: translate3d(-50%, -50%, 0);
39
-
40
- background-color: var(--color-3);
41
- color: var(--color-1);
42
-
43
- border-radius: var(--border-radius-large);
44
-
45
- p {
46
- margin: 0.5em 0;
47
- max-width: 65%;
48
- }
49
-
50
- .qr {
51
- display: block;
52
- }
53
- }
54
-
55
- .options {
56
- display: grid;
57
-
58
- grid-template-columns: 1fr 100px;
59
- gap: var(--spacing-normal);
60
-
61
- &-bottom {
62
- grid-column: 1 / -1;
63
-
64
- p {
65
- margin: 0;
66
-
67
- em {
68
- color: vaR(--color-1);
69
- font-style: normal;
70
- }
71
- }
72
- }
73
- }
74
- </style>
@@ -1,91 +0,0 @@
1
- <script>
2
- import { Pause, Play, PlaySkipBack, PlaySkipForward } from 'svelte-ionicons';
3
- import { api } from '$lib/store';
4
-
5
- const { playing = false, title, onTrigger = () => {}, canControl = true } = $props();
6
-
7
- /**
8
- * A variable to create the illusion of immediate feedback
9
- *
10
- * @type {boolean | null}
11
- */
12
- let eagerToggle = $state(null);
13
-
14
- let playDisplay = $derived(eagerToggle ?? playing);
15
-
16
- async function onSkipBackward() {
17
- await $api.skipBackward();
18
- onTrigger();
19
- }
20
-
21
- async function onPlay() {
22
- eagerToggle = true;
23
- await $api.play();
24
- onTrigger();
25
- }
26
-
27
- async function onPause() {
28
- eagerToggle = false;
29
- await $api.pause();
30
- onTrigger();
31
- }
32
-
33
- async function onSkipForward() {
34
- await $api.skipForward();
35
- onTrigger();
36
- }
37
-
38
- $effect(() => {
39
- if (typeof playing === 'boolean') {
40
- eagerToggle = null;
41
- }
42
- });
43
- </script>
44
-
45
- <div class="controls color-1">
46
- <div class="controls-top ellipsis">{title}</div>
47
-
48
- {#if canControl}
49
- <div class="controls-actions">
50
- <button onclick={onSkipBackward} class="btn-reset">
51
- <PlaySkipBack />
52
- </button>
53
- {#if playDisplay === true}
54
- <button onclick={onPause} class="btn-reset">
55
- <Pause />
56
- </button>
57
- {:else if playDisplay === false}
58
- <button onclick={onPlay} class="btn-reset">
59
- <Play />
60
- </button>
61
- {/if}
62
- <button onclick={onSkipForward} class="btn-reset">
63
- <PlaySkipForward />
64
- </button>
65
- </div>
66
- {/if}
67
- </div>
68
-
69
- <style lang="scss">
70
- .controls {
71
- display: flex;
72
-
73
- flex-direction: column;
74
- align-items: center;
75
-
76
- gap: var(--spacing-normal);
77
-
78
- width: 100%;
79
- max-width: 400px;
80
-
81
- &-top {
82
- width: 100%;
83
-
84
- text-align: center;
85
- }
86
-
87
- :global(svg) {
88
- fill: currentColor;
89
- }
90
- }
91
- </style>
@@ -1,79 +0,0 @@
1
- <script>
2
- const { full, low } = $props();
3
-
4
- const LOAD_STATE = {
5
- INITIAL: 0,
6
- LOAD: 1,
7
- FULL: 2,
8
- COMPLETE: 3
9
- };
10
-
11
- let loadState = $state();
12
-
13
- function onLowLoad() {
14
- if (loadState === LOAD_STATE.INITIAL) {
15
- loadState = LOAD_STATE.LOAD;
16
- }
17
- }
18
-
19
- function onFullLoad() {
20
- loadState = LOAD_STATE.FULL;
21
- }
22
-
23
- let mounted = $state(false);
24
-
25
- $effect(() => {
26
- mounted = true;
27
- });
28
- </script>
29
-
30
- <span
31
- class="image"
32
- class:display={loadState === LOAD_STATE.FULL || loadState === LOAD_STATE.COMPLETE}
33
- >
34
- {#if loadState !== LOAD_STATE.INITIAL && mounted}
35
- <img
36
- class="full"
37
- src={full}
38
- onload={onFullLoad}
39
- alt=""
40
- ontransitionend={() => (loadState = LOAD_STATE.COMPLETE)}
41
- />
42
- {/if}
43
-
44
- {#if loadState !== LOAD_STATE.COMPLETE}
45
- <img class="low" src={low} onload={onLowLoad} alt="" />
46
- {/if}
47
- </span>
48
-
49
- <style lang="scss">
50
- .image {
51
- display: inline-grid;
52
-
53
- grid-template-columns: 1fr;
54
- grid-template-rows: 1fr;
55
-
56
- line-height: 0;
57
-
58
- width: 100%;
59
- height: 100%;
60
-
61
- img {
62
- grid-column: 1;
63
- grid-row: 1;
64
- }
65
- }
66
-
67
- .full {
68
- opacity: 0;
69
-
70
- transition: {
71
- duration: 0.5s;
72
- property: opacity;
73
- }
74
-
75
- .display & {
76
- opacity: 1;
77
- }
78
- }
79
- </style>
@@ -1,75 +0,0 @@
1
- <script>
2
- const { floating = false } = $props();
3
- </script>
4
-
5
- <div class="loading" class:floating>
6
- <div class="loading-icon"></div>
7
- <div class="loading-icon"></div>
8
- <div class="loading-icon"></div>
9
- </div>
10
-
11
- <style lang="scss">
12
- @property --loading-size {
13
- syntax: '<length>';
14
- inherits: false;
15
- initial-value: 16px;
16
- }
17
-
18
- .loading {
19
- display: inline-grid;
20
-
21
- aspect-ratio: 1;
22
- align-items: center;
23
- grid-template-columns: repeat(3, var(--loading-size));
24
-
25
- padding: var(--loading-padding, var(--spacing-small));
26
- gap: var(--loading-gap, var(--spacing-small));
27
-
28
- background-color: var(--color-1);
29
- border-radius: var(--border-radius-normal);
30
-
31
- &.floating {
32
- position: absolute;
33
-
34
- top: 50%;
35
- left: 50%;
36
-
37
- transform: translate3d(-50%, -50%, 0);
38
-
39
- z-index: 20;
40
- }
41
- }
42
-
43
- .loading-icon {
44
- background-color: var(--color-bg);
45
-
46
- aspect-ratio: 1;
47
-
48
- border-radius: 100%;
49
-
50
- animation: {
51
- name: BLOAT;
52
- duration: 1.2s;
53
- iteration-count: infinite;
54
- timing-function: var(--easing);
55
- }
56
-
57
- @for $i from 1 through 3 {
58
- &:nth-child(#{$i}) {
59
- animation-delay: 0.15s * ($i - 1);
60
- }
61
- }
62
- }
63
-
64
- @keyframes BLOAT {
65
- 0% {
66
- transform: scale(1);
67
- }
68
- 50% {
69
- transform: scale(1.2);
70
- }
71
- 100% {
72
- transform: scale(1);
73
- }
74
- }
75
- </style>