@growth-labs/video 0.3.2 → 0.3.3

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/README.md CHANGED
@@ -26,22 +26,32 @@ video({
26
26
  })
27
27
  ```
28
28
 
29
- Premium playback additionally needs `premium.enabled`, an `accessCheck`, and a `GL_VIDEO_SESSION_SECRET` secret of at least 32 bytes:
29
+ Premium playback additionally needs `premium.enabled`, an `accessCheckModule` (a module-spec pointing at a file in your own codebase), and a `GL_VIDEO_SESSION_SECRET` secret of at least 32 bytes:
30
30
 
31
31
  ```ts
32
+ // astro.config.mjs
32
33
  video({
33
34
  publicDomain: 'media.example.com',
34
35
  premium: {
35
36
  enabled: true,
36
37
  sessionScope: 'per-video', // default; 'wildcard' opts into the 0.2.x behavior
37
38
  sessionTtl: '1h', // duration string: '1h' | '30m' | '2h30m' | '45s'
38
- },
39
- accessCheck: async ({ videoId, request, env }, context) => {
40
- // Returns { allowed, reason?, subjectId? }
39
+ accessCheckModule: { module: '/src/lib/video-access-check', export: 'check' },
41
40
  },
42
41
  })
43
42
  ```
44
43
 
44
+ ```ts
45
+ // /src/lib/video-access-check.ts
46
+ import type { AccessCheck } from '@growth-labs/video'
47
+
48
+ export const check: AccessCheck = async ({ videoId, request, env }, context) => {
49
+ // Returns { allowed, reason?, subjectId? }
50
+ }
51
+ ```
52
+
53
+ Why a module spec instead of an inline function? The integration runs in the build-time Node process; the session route runs in the Worker runtime — a different process. An inline `accessCheck` registered at build time **never reaches** the Worker bundle, so every request would 500 with `access_check_not_configured`. The module-spec lets the Vite plugin emit a real static ES import at the top of the `virtual:growth-labs/video/access-check` module, so the function is bundled with the worker. Matches the same pattern as `@growth-labs/auth`'s `renderers` (see auth 0.3.7+ MIGRATION.md).
54
+
45
55
  `per-video` scope (the 0.3.0 default) issues a cookie restricted to one `videoId`, so video status changes propagate within `sessionTtl`. `wildcard` issues a cookie that plays every premium video for the cookie's lifetime — cheaper per page but status changes do not propagate until the cookie expires.
46
56
 
47
57
  ## R2 Layout
package/dist/index.d.ts CHANGED
@@ -1,14 +1,25 @@
1
1
  import type { AstroIntegration } from 'astro';
2
- import { type AccessCheck } from './access-registry.js';
3
2
  import { type VideoOptions } from './options.js';
3
+ import type { AccessCheck } from './types.js';
4
+ /**
5
+ * Integration input. Mirrors `VideoOptions` (the Zod-validated shape). The
6
+ * legacy `accessCheck` inline function is accepted only to throw a clear
7
+ * migration error at integration init — it never worked in Cloudflare
8
+ * Workers production (build-time registration didn't survive to the
9
+ * runtime process). See MIGRATION.md.
10
+ */
4
11
  export interface VideoIntegrationInput extends VideoOptions {
12
+ /**
13
+ * @deprecated since 0.3.3 — removed. Wire your access check through
14
+ * `premium.accessCheckModule: { module, export }` instead. The inline
15
+ * form never worked in Cloudflare Workers production.
16
+ */
5
17
  accessCheck?: AccessCheck;
6
18
  }
7
19
  export default function video(userOptions: VideoIntegrationInput): AstroIntegration;
8
- export type { AccessCheck, AccessCheckParams, AccessResult, } from './access-registry.js';
9
20
  export type { ResolvedVideoOptions, VideoOptions } from './options.js';
10
21
  export { videoOptionsSchema } from './options.js';
11
- export type { Chapter, ChaptersFile, VideoObjectInput, VttCue } from './types.js';
22
+ export type { AccessCheck, AccessCheckParams, AccessResult, Chapter, ChaptersFile, VideoObjectInput, VttCue, } from './types.js';
12
23
  export { loadCaptions, parseVtt } from './utils/captions.js';
13
24
  export { loadChapters, parseChaptersJson, parseChaptersVtt } from './utils/chapters.js';
14
25
  export { type HlsBundleFile, type HlsBundleIngestResult, ingestHlsBundle, type ValidatedHlsBundle, type ValidatedHlsBundleFile, type VideoR2Bucket, validateHlsBundle, } from './utils/ingest.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAA;AAC5E,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,cAAc,CAAA;AAGpE,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IAC1D,WAAW,CAAC,EAAE,WAAW,CAAA;CACzB;AAED,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,WAAW,EAAE,qBAAqB,GAAG,gBAAgB,CA2ClF;AAED,YAAY,EACX,WAAW,EACX,iBAAiB,EACjB,YAAY,GACZ,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACjF,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACvF,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,iBAAiB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EACN,WAAW,EACX,eAAe,EACf,WAAW,EACX,eAAe,EACf,SAAS,EACT,gBAAgB,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EACN,eAAe,EACf,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,WAAW,EACX,eAAe,EACf,WAAW,EACX,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,kBAAkB,GAClB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,cAAc,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAG7C;;;;;;GAMG;AACH,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IAC1D;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;CACzB;AAED,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,WAAW,EAAE,qBAAqB,GAAG,gBAAgB,CAuDlF;AAED,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,YAAY,EACX,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,MAAM,GACN,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACvF,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,iBAAiB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EACN,WAAW,EACX,eAAe,EACf,WAAW,EACX,eAAe,EACf,SAAS,EACT,gBAAgB,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EACN,eAAe,EACf,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,WAAW,EACX,eAAe,EACf,WAAW,EACX,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,kBAAkB,GAClB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA"}
package/dist/index.js CHANGED
@@ -1,16 +1,25 @@
1
- import { registerAccessCheck } from './access-registry.js';
2
1
  import { videoOptionsSchema } from './options.js';
3
2
  import { growthLabsVideoPlugin } from './vite-plugin.js';
4
3
  export default function video(userOptions) {
5
- const { accessCheck, ...optionsInput } = userOptions;
4
+ const { accessCheck: inlineAccessCheck, ...optionsInput } = userOptions;
6
5
  const options = videoOptionsSchema.parse(optionsInput);
7
6
  if (options.premium?.enabled) {
8
- if (!accessCheck) {
9
- throw new Error('@growth-labs/video: premium.enabled=true but no accessCheck was provided. ' +
10
- 'Premium video must not be served without an entitlement check. ' +
11
- 'Either provide an accessCheck function or set premium.enabled=false.');
7
+ if (inlineAccessCheck !== undefined && !options.premium.accessCheckModule) {
8
+ throw new Error('@growth-labs/video: inline `accessCheck` function is no longer supported since 0.3.3. ' +
9
+ 'The inline form never worked in Cloudflare Workers production build-time ' +
10
+ 'registration of the function did not survive to the runtime process, so ' +
11
+ '`/api/video/session` returned `500 access_check_not_registered` on every request. ' +
12
+ 'Move the function into its own module and reference it via ' +
13
+ "`premium.accessCheckModule: { module: '/src/lib/video-access-check', export: 'check' }`. " +
14
+ 'See MIGRATION.md for the migration.');
15
+ }
16
+ if (!options.premium.accessCheckModule) {
17
+ throw new Error('@growth-labs/video: premium.enabled=true but no `premium.accessCheckModule` was provided. ' +
18
+ 'Premium video must not be served without an entitlement check. Wire one as ' +
19
+ "`premium.accessCheckModule: { module: '/src/lib/video-access-check', export: 'check' }` " +
20
+ '(the module path is project-root absolute; the export must implement the `AccessCheck` type). ' +
21
+ 'See README + MIGRATION.md for the module shape, or set `premium.enabled=false`.');
12
22
  }
13
- registerAccessCheck(accessCheck);
14
23
  }
15
24
  return {
16
25
  name: '@growth-labs/video',
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC5E,OAAO,EAAqB,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAMxD,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,WAAkC;IAC/D,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,GAAG,WAAW,CAAA;IACpD,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IAEtD,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACd,4EAA4E;gBAC3E,iEAAiE;gBACjE,sEAAsE,CACvE,CAAA;QACF,CAAC;QACD,mBAAmB,CAAC,WAAW,CAAC,CAAA;IACjC,CAAC;IAED,OAAO;QACN,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE;YACN,oBAAoB,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE;gBACvD,YAAY,CAAC;oBACZ,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,EAAE;iBACnD,CAAC,CAAA;gBAEF,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;oBAC9B,WAAW,CAAC;wBACX,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY;wBACrC,UAAU,EAAE,mCAAmC;qBAC/C,CAAC,CAAA;oBACF,WAAW,CAAC;wBACX,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,YAAY;wBACrD,UAAU,EAAE,oCAAoC;qBAChD,CAAC,CAAA;gBACH,CAAC;gBAED,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;oBACvC,WAAW,CAAC;wBACX,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI;wBACvC,UAAU,EAAE,kCAAkC;qBAC9C,CAAC,CAAA;gBACH,CAAC;YACF,CAAC;SACD;KACD,CAAA;AACF,CAAC;AAQD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACvF,OAAO,EAGN,eAAe,EAIf,iBAAiB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EACN,WAAW,EACX,eAAe,EACf,WAAW,EACX,eAAe,EACf,SAAS,EACT,gBAAgB,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EACN,eAAe,EACf,eAAe,EAIf,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,WAAW,EACX,eAAe,EACf,WAAW,EACX,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,kBAAkB,GAClB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/options.d.ts CHANGED
@@ -37,6 +37,16 @@ export declare const videoOptionsSchema: z.ZodObject<{
37
37
  sessionScope: z.ZodDefault<z.ZodEnum<["per-video", "wildcard"]>>;
38
38
  sessionTtl: z.ZodEffects<z.ZodDefault<z.ZodString>, number, string | undefined>;
39
39
  signingSecretEnv: z.ZodDefault<z.ZodString>;
40
+ accessCheckModule: z.ZodOptional<z.ZodObject<{
41
+ module: z.ZodString;
42
+ export: z.ZodDefault<z.ZodString>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ module: string;
45
+ export: string;
46
+ }, {
47
+ module: string;
48
+ export?: string | undefined;
49
+ }>>;
40
50
  }, "strip", z.ZodTypeAny, {
41
51
  enabled: boolean;
42
52
  sessionRoute: string;
@@ -45,6 +55,10 @@ export declare const videoOptionsSchema: z.ZodObject<{
45
55
  sessionScope: "per-video" | "wildcard";
46
56
  sessionTtl: number;
47
57
  signingSecretEnv: string;
58
+ accessCheckModule?: {
59
+ module: string;
60
+ export: string;
61
+ } | undefined;
48
62
  }, {
49
63
  enabled?: boolean | undefined;
50
64
  sessionRoute?: string | undefined;
@@ -53,6 +67,10 @@ export declare const videoOptionsSchema: z.ZodObject<{
53
67
  sessionScope?: "per-video" | "wildcard" | undefined;
54
68
  sessionTtl?: string | undefined;
55
69
  signingSecretEnv?: string | undefined;
70
+ accessCheckModule?: {
71
+ module: string;
72
+ export?: string | undefined;
73
+ } | undefined;
56
74
  }>>;
57
75
  player: z.ZodDefault<z.ZodObject<{
58
76
  autoplay: z.ZodDefault<z.ZodBoolean>;
@@ -138,6 +156,10 @@ export declare const videoOptionsSchema: z.ZodObject<{
138
156
  sessionScope: "per-video" | "wildcard";
139
157
  sessionTtl: number;
140
158
  signingSecretEnv: string;
159
+ accessCheckModule?: {
160
+ module: string;
161
+ export: string;
162
+ } | undefined;
141
163
  } | undefined;
142
164
  }, {
143
165
  publicDomain: string;
@@ -157,6 +179,10 @@ export declare const videoOptionsSchema: z.ZodObject<{
157
179
  sessionScope?: "per-video" | "wildcard" | undefined;
158
180
  sessionTtl?: string | undefined;
159
181
  signingSecretEnv?: string | undefined;
182
+ accessCheckModule?: {
183
+ module: string;
184
+ export?: string | undefined;
185
+ } | undefined;
160
186
  } | undefined;
161
187
  player?: {
162
188
  autoplay?: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiBvB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4F7B,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAC7D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAA"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiBvB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkG7B,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAC7D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAA"}
package/dist/options.js CHANGED
@@ -72,6 +72,12 @@ export const videoOptionsSchema = z.object({
72
72
  return seconds;
73
73
  }),
74
74
  signingSecretEnv: z.string().default('GL_VIDEO_SESSION_SECRET'),
75
+ accessCheckModule: z
76
+ .object({
77
+ module: z.string().min(1),
78
+ export: z.string().min(1).default('accessCheck'),
79
+ })
80
+ .optional(),
75
81
  })
76
82
  .optional(),
77
83
  // ─── Player defaults ───
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,uBAAuB,GAAG,EAAE,CAAA;AAClC,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAEtC,SAAS,sBAAsB,CAAC,KAAa;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAChE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;IAChE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAA;IACzB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACtE,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9C,OAAO,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,CAAA;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,mBAAmB;IACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IAExB,sBAAsB;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC;IAE7C,sDAAsD;IACtD,KAAK,EAAE,CAAC;SACN,MAAM,CAAC;QACP,WAAW,EAAE,CAAC;aACZ,MAAM,CAAC;YACP,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC;YAC7C,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;SACtC,CAAC;aACD,OAAO,CAAC,EAAE,CAAC;KACb,CAAC;SACD,OAAO,CAAC,EAAE,CAAC;IAEb,oCAAoC;IACpC,OAAO,EAAE,CAAC;SACR,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACtD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC;QACxD,iBAAiB,EAAE,CAAC;aAClB,MAAM,EAAE;aACR,KAAK,CAAC,kBAAkB,EAAE,8DAA8D,CAAC;aACzF,OAAO,CAAC,kBAAkB,CAAC;QAC7B,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACpE,UAAU,EAAE,CAAC;aACX,MAAM,EAAE;aACR,OAAO,CAAC,IAAI,CAAC;aACb,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACzB,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;YAC7C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACtB,GAAG,CAAC,QAAQ,CAAC;oBACZ,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;oBAC3B,OAAO,EAAE,uBAAuB,KAAK,6DAA6D;iBAClG,CAAC,CAAA;gBACF,OAAO,CAAC,CAAC,KAAK,CAAA;YACf,CAAC;YACD,IAAI,OAAO,GAAG,uBAAuB,EAAE,CAAC;gBACvC,GAAG,CAAC,QAAQ,CAAC;oBACZ,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;oBAC3B,OAAO,EAAE,eAAe,KAAK,iBAAiB,OAAO,iBAAiB,uBAAuB,IAAI;iBACjG,CAAC,CAAA;gBACF,OAAO,CAAC,CAAC,KAAK,CAAA;YACf,CAAC;YACD,IAAI,OAAO,GAAG,uBAAuB,EAAE,CAAC;gBACvC,GAAG,CAAC,QAAQ,CAAC;oBACZ,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;oBAC3B,OAAO,EAAE,eAAe,KAAK,iBAAiB,OAAO,iBAAiB,uBAAuB,UAAU;iBACvG,CAAC,CAAA;gBACF,OAAO,CAAC,CAAC,KAAK,CAAA;YACf,CAAC;YACD,OAAO,OAAO,CAAA;QACf,CAAC,CAAC;QACH,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC;KAC/D,CAAC;SACD,QAAQ,EAAE;IAEZ,0BAA0B;IAC1B,MAAM,EAAE,CAAC;SACP,MAAM,CAAC;QACP,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACpC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QACjE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QACvC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QACvC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QACnC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;KACtE,CAAC;SACD,OAAO,CAAC,EAAE,CAAC;IAEb,iCAAiC;IACjC,OAAO,EAAE,CAAC;SACR,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QACtC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KACnC,CAAC;SACD,OAAO,CAAC,EAAE,CAAC;IAEb,oBAAoB;IACpB,SAAS,EAAE,CAAC;SACV,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;KACjF,CAAC;SACD,OAAO,CAAC,EAAE,CAAC;CACb,CAAC,CAAA"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/routes/session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAarC,eAAO,MAAM,IAAI,EAAE,QAqElB,CAAA"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/routes/session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAYrC,eAAO,MAAM,IAAI,EAAE,QAqElB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { env as cloudflareEnv } from 'cloudflare:workers';
2
+ import { accessRegistry } from 'virtual:growth-labs/video/access-check';
2
3
  import { config } from 'virtual:growth-labs/video/config';
3
- import { getAccessCheck } from '../access-registry.js';
4
4
  import { issueSession } from '../utils/session.js';
5
5
  const MIN_SECRET_BYTES = 32;
6
6
  function json(body, status) {
@@ -29,9 +29,9 @@ export const POST = async (context) => {
29
29
  if (!config.premium) {
30
30
  return json({ error: 'premium_not_enabled' }, 500);
31
31
  }
32
- const accessCheck = getAccessCheck();
33
- if (!accessCheck) {
34
- return json({ error: 'access_check_not_registered' }, 500);
32
+ const accessCheck = accessRegistry.check;
33
+ if (typeof accessCheck !== 'function') {
34
+ return json({ error: 'access_check_not_configured' }, 500);
35
35
  }
36
36
  const result = await accessCheck({ videoId: body.videoId, request, env }, context);
37
37
  if (!result.allowed) {
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/routes/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/routes/session.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,3 +1,15 @@
1
+ import type { APIContext } from 'astro';
2
+ export interface AccessCheckParams {
3
+ videoId: string;
4
+ request: Request;
5
+ env: Record<string, unknown>;
6
+ }
7
+ export interface AccessResult {
8
+ allowed: boolean;
9
+ reason?: string;
10
+ subjectId?: string;
11
+ }
12
+ export type AccessCheck = (params: AccessCheckParams, context: APIContext) => Promise<AccessResult>;
1
13
  export interface Chapter {
2
14
  index: number;
3
15
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,EAAE,OAAO,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,MAAM;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACzD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEvC,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC5B;AAED,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;AAEnG,MAAM,WAAW,OAAO;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,EAAE,OAAO,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,MAAM;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACzD"}
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAKxD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAc1E"}
1
+ {"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAOxD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAyB1E"}
@@ -1,17 +1,32 @@
1
1
  const VIRTUAL_MODULE_ID = 'virtual:growth-labs/video/config';
2
2
  const RESOLVED_VIRTUAL_MODULE_ID = `\0${VIRTUAL_MODULE_ID}`;
3
+ const ACCESS_CHECK_VIRTUAL_ID = 'virtual:growth-labs/video/access-check';
4
+ const RESOLVED_ACCESS_CHECK_VIRTUAL_ID = `\0${ACCESS_CHECK_VIRTUAL_ID}`;
3
5
  export function growthLabsVideoPlugin(config) {
4
6
  return {
5
7
  name: 'growth-labs-video-config',
6
8
  resolveId(id) {
7
- if (id === VIRTUAL_MODULE_ID) {
9
+ if (id === VIRTUAL_MODULE_ID)
8
10
  return RESOLVED_VIRTUAL_MODULE_ID;
9
- }
11
+ if (id === ACCESS_CHECK_VIRTUAL_ID)
12
+ return RESOLVED_ACCESS_CHECK_VIRTUAL_ID;
10
13
  },
11
14
  load(id) {
12
15
  if (id === RESOLVED_VIRTUAL_MODULE_ID) {
13
16
  return `export const config = ${JSON.stringify(config)};`;
14
17
  }
18
+ if (id === RESOLVED_ACCESS_CHECK_VIRTUAL_ID) {
19
+ const spec = config.premium?.accessCheckModule;
20
+ if (!spec) {
21
+ return 'export const accessRegistry = {};\n';
22
+ }
23
+ const local = '__gl_video_access_check_0';
24
+ return [
25
+ `import { ${spec.export} as ${local} } from ${JSON.stringify(spec.module)};`,
26
+ `export const accessRegistry = { check: ${local} };`,
27
+ '',
28
+ ].join('\n');
29
+ }
15
30
  },
16
31
  };
17
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAGA,MAAM,iBAAiB,GAAG,kCAAkC,CAAA;AAC5D,MAAM,0BAA0B,GAAG,KAAK,iBAAiB,EAAE,CAAA;AAE3D,MAAM,UAAU,qBAAqB,CAAC,MAA4B;IACjE,OAAO;QACN,IAAI,EAAE,0BAA0B;QAChC,SAAS,CAAC,EAAE;YACX,IAAI,EAAE,KAAK,iBAAiB,EAAE,CAAC;gBAC9B,OAAO,0BAA0B,CAAA;YAClC,CAAC;QACF,CAAC;QACD,IAAI,CAAC,EAAE;YACN,IAAI,EAAE,KAAK,0BAA0B,EAAE,CAAC;gBACvC,OAAO,yBAAyB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAA;YAC1D,CAAC;QACF,CAAC;KACD,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAGA,MAAM,iBAAiB,GAAG,kCAAkC,CAAA;AAC5D,MAAM,0BAA0B,GAAG,KAAK,iBAAiB,EAAE,CAAA;AAC3D,MAAM,uBAAuB,GAAG,wCAAwC,CAAA;AACxE,MAAM,gCAAgC,GAAG,KAAK,uBAAuB,EAAE,CAAA;AAEvE,MAAM,UAAU,qBAAqB,CAAC,MAA4B;IACjE,OAAO;QACN,IAAI,EAAE,0BAA0B;QAChC,SAAS,CAAC,EAAE;YACX,IAAI,EAAE,KAAK,iBAAiB;gBAAE,OAAO,0BAA0B,CAAA;YAC/D,IAAI,EAAE,KAAK,uBAAuB;gBAAE,OAAO,gCAAgC,CAAA;QAC5E,CAAC;QACD,IAAI,CAAC,EAAE;YACN,IAAI,EAAE,KAAK,0BAA0B,EAAE,CAAC;gBACvC,OAAO,yBAAyB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAA;YAC1D,CAAC;YACD,IAAI,EAAE,KAAK,gCAAgC,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAA;gBAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;oBACX,OAAO,qCAAqC,CAAA;gBAC7C,CAAC;gBACD,MAAM,KAAK,GAAG,2BAA2B,CAAA;gBACzC,OAAO;oBACN,YAAY,IAAI,CAAC,MAAM,OAAO,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;oBAC5E,0CAA0C,KAAK,KAAK;oBACpD,EAAE;iBACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACb,CAAC;QACF,CAAC;KACD,CAAA;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@growth-labs/video",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {