@positronic/cloudflare 0.0.22 → 0.0.24

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.
@@ -248,6 +248,7 @@ import { DurableObject } from 'cloudflare:workers';
248
248
  import { BrainRunSQLiteAdapter } from './sqlite-adapter.js';
249
249
  import { WebhookAdapter } from './webhook-adapter.js';
250
250
  import { PageAdapter } from './page-adapter.js';
251
+ import { createPagesService } from './pages-service.js';
251
252
  import { CloudflareR2Loader } from './r2-loader.js';
252
253
  import { createResources } from '@positronic/core';
253
254
  var manifest = null;
@@ -570,7 +571,7 @@ export var BrainRunnerDO = /*#__PURE__*/ function(DurableObject) {
570
571
  key: "start",
571
572
  value: function start(brainTitle, brainRunId, initialData) {
572
573
  return _async_to_generator(function() {
573
- var _this, sql, resolution, brainToRun, sqliteAdapter, eventStreamAdapter, monitorDOStub, monitorAdapter, scheduleAdapter, webhookAdapter, pageAdapter, r2Resources, runnerWithResources, options, initialState;
574
+ var _this, sql, resolution, brainToRun, sqliteAdapter, eventStreamAdapter, monitorDOStub, monitorAdapter, scheduleAdapter, webhookAdapter, pageAdapter, baseUrl, pagesService, r2Resources, runnerWithResources, options, initialState;
574
575
  return _ts_generator(this, function(_state) {
575
576
  switch(_state.label){
576
577
  case 0:
@@ -601,6 +602,9 @@ export var BrainRunnerDO = /*#__PURE__*/ function(DurableObject) {
601
602
  scheduleAdapter = new ScheduleAdapter(this.env.SCHEDULE_DO.get(this.env.SCHEDULE_DO.idFromName('singleton')));
602
603
  webhookAdapter = new WebhookAdapter(monitorDOStub);
603
604
  pageAdapter = new PageAdapter(monitorDOStub, this.env.RESOURCES_BUCKET);
605
+ // Create pages service for brain to use
606
+ baseUrl = this.env.WORKER_URL || 'http://localhost:3000';
607
+ pagesService = createPagesService(brainRunId, this.env.RESOURCES_BUCKET, monitorDOStub, baseUrl);
604
608
  if (!brainRunner) {
605
609
  throw new Error('BrainRunner not initialized');
606
610
  }
@@ -616,6 +620,8 @@ export var BrainRunnerDO = /*#__PURE__*/ function(DurableObject) {
616
620
  if (r2Resources) {
617
621
  runnerWithResources = brainRunner.withResources(r2Resources);
618
622
  }
623
+ // Add pages service
624
+ runnerWithResources = runnerWithResources.withPages(pagesService);
619
625
  // Extract options from initialData if present
620
626
  options = initialData === null || initialData === void 0 ? void 0 : initialData.options;
621
627
  initialState = initialData && !initialData.options ? initialData : {};
@@ -654,7 +660,7 @@ export var BrainRunnerDO = /*#__PURE__*/ function(DurableObject) {
654
660
  key: "resume",
655
661
  value: function resume(brainRunId, webhookResponse) {
656
662
  return _async_to_generator(function() {
657
- var _this, sql, startEventResult, startEvent, brainTitle, initialState, resolution, brainToRun, eventsResult, initialCompletedSteps, sqliteAdapter, eventStreamAdapter, monitorDOStub, monitorAdapter, scheduleAdapter, webhookAdapter, pageAdapter, r2Resources, runnerWithResources;
663
+ var _this, sql, startEventResult, startEvent, brainTitle, initialState, resolution, brainToRun, eventsResult, initialCompletedSteps, sqliteAdapter, eventStreamAdapter, monitorDOStub, monitorAdapter, scheduleAdapter, webhookAdapter, pageAdapter, baseUrl, pagesService, r2Resources, runnerWithResources;
658
664
  return _ts_generator(this, function(_state) {
659
665
  switch(_state.label){
660
666
  case 0:
@@ -706,6 +712,9 @@ export var BrainRunnerDO = /*#__PURE__*/ function(DurableObject) {
706
712
  scheduleAdapter = new ScheduleAdapter(this.env.SCHEDULE_DO.get(this.env.SCHEDULE_DO.idFromName('singleton')));
707
713
  webhookAdapter = new WebhookAdapter(monitorDOStub);
708
714
  pageAdapter = new PageAdapter(monitorDOStub, this.env.RESOURCES_BUCKET);
715
+ // Create pages service for brain to use
716
+ baseUrl = this.env.WORKER_URL || 'http://localhost:3000';
717
+ pagesService = createPagesService(brainRunId, this.env.RESOURCES_BUCKET, monitorDOStub, baseUrl);
709
718
  if (!brainRunner) {
710
719
  throw new Error('BrainRunner not initialized');
711
720
  }
@@ -719,6 +728,8 @@ export var BrainRunnerDO = /*#__PURE__*/ function(DurableObject) {
719
728
  if (r2Resources) {
720
729
  runnerWithResources = brainRunner.withResources(r2Resources);
721
730
  }
731
+ // Add pages service
732
+ runnerWithResources = runnerWithResources.withPages(pagesService);
722
733
  // Create abort controller for this run
723
734
  this.abortController = new AbortController();
724
735
  runnerWithResources.withAdapters([
package/dist/src/index.js CHANGED
@@ -4,3 +4,4 @@ export { ScheduleDO } from './schedule-do.js';
4
4
  export { PositronicManifest } from './manifest.js';
5
5
  export { default as api } from './api.js';
6
6
  export { CloudflareR2Loader } from './r2-loader.js';
7
+ export { createPagesService } from './pages-service.js';
@@ -0,0 +1,349 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _async_to_generator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
+ }
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
+ }
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ function _define_property(obj, key, value) {
31
+ if (key in obj) {
32
+ Object.defineProperty(obj, key, {
33
+ value: value,
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true
37
+ });
38
+ } else {
39
+ obj[key] = value;
40
+ }
41
+ return obj;
42
+ }
43
+ function _object_spread(target) {
44
+ for(var i = 1; i < arguments.length; i++){
45
+ var source = arguments[i] != null ? arguments[i] : {};
46
+ var ownKeys = Object.keys(source);
47
+ if (typeof Object.getOwnPropertySymbols === "function") {
48
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
49
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
50
+ }));
51
+ }
52
+ ownKeys.forEach(function(key) {
53
+ _define_property(target, key, source[key]);
54
+ });
55
+ }
56
+ return target;
57
+ }
58
+ function ownKeys(object, enumerableOnly) {
59
+ var keys = Object.keys(object);
60
+ if (Object.getOwnPropertySymbols) {
61
+ var symbols = Object.getOwnPropertySymbols(object);
62
+ if (enumerableOnly) {
63
+ symbols = symbols.filter(function(sym) {
64
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
65
+ });
66
+ }
67
+ keys.push.apply(keys, symbols);
68
+ }
69
+ return keys;
70
+ }
71
+ function _object_spread_props(target, source) {
72
+ source = source != null ? source : {};
73
+ if (Object.getOwnPropertyDescriptors) {
74
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
75
+ } else {
76
+ ownKeys(Object(source)).forEach(function(key) {
77
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
78
+ });
79
+ }
80
+ return target;
81
+ }
82
+ function _ts_generator(thisArg, body) {
83
+ var f, y, t, _ = {
84
+ label: 0,
85
+ sent: function() {
86
+ if (t[0] & 1) throw t[1];
87
+ return t[1];
88
+ },
89
+ trys: [],
90
+ ops: []
91
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
92
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
93
+ return this;
94
+ }), g;
95
+ function verb(n) {
96
+ return function(v) {
97
+ return step([
98
+ n,
99
+ v
100
+ ]);
101
+ };
102
+ }
103
+ function step(op) {
104
+ if (f) throw new TypeError("Generator is already executing.");
105
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
106
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
107
+ if (y = 0, t) op = [
108
+ op[0] & 2,
109
+ t.value
110
+ ];
111
+ switch(op[0]){
112
+ case 0:
113
+ case 1:
114
+ t = op;
115
+ break;
116
+ case 4:
117
+ _.label++;
118
+ return {
119
+ value: op[1],
120
+ done: false
121
+ };
122
+ case 5:
123
+ _.label++;
124
+ y = op[1];
125
+ op = [
126
+ 0
127
+ ];
128
+ continue;
129
+ case 7:
130
+ op = _.ops.pop();
131
+ _.trys.pop();
132
+ continue;
133
+ default:
134
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
135
+ _ = 0;
136
+ continue;
137
+ }
138
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
139
+ _.label = op[1];
140
+ break;
141
+ }
142
+ if (op[0] === 6 && _.label < t[1]) {
143
+ _.label = t[1];
144
+ t = op;
145
+ break;
146
+ }
147
+ if (t && _.label < t[2]) {
148
+ _.label = t[2];
149
+ _.ops.push(op);
150
+ break;
151
+ }
152
+ if (t[2]) _.ops.pop();
153
+ _.trys.pop();
154
+ continue;
155
+ }
156
+ op = body.call(thisArg, _);
157
+ } catch (e) {
158
+ op = [
159
+ 6,
160
+ e
161
+ ];
162
+ y = 0;
163
+ } finally{
164
+ f = t = 0;
165
+ }
166
+ if (op[0] & 5) throw op[1];
167
+ return {
168
+ value: op[0] ? op[1] : void 0,
169
+ done: true
170
+ };
171
+ }
172
+ }
173
+ /**
174
+ * Creates a PagesService implementation that works directly with R2 and MonitorDO.
175
+ *
176
+ * @param brainRunId - The current brain run ID (used for page registration/cleanup)
177
+ * @param bucket - The R2 bucket for storing pages
178
+ * @param monitorStub - The MonitorDO stub for page registration
179
+ * @param baseUrl - The base URL for page URLs (e.g., "https://myapp.workers.dev")
180
+ */ export function createPagesService(brainRunId, bucket, monitorStub, baseUrl) {
181
+ return {
182
+ create: function create(slug, html, options) {
183
+ return _async_to_generator(function() {
184
+ var key, createdAt, _options_persist, persist, url;
185
+ return _ts_generator(this, function(_state) {
186
+ switch(_state.label){
187
+ case 0:
188
+ key = "pages/".concat(slug, ".html");
189
+ createdAt = new Date().toISOString();
190
+ persist = (_options_persist = options === null || options === void 0 ? void 0 : options.persist) !== null && _options_persist !== void 0 ? _options_persist : false;
191
+ // Store HTML with metadata in R2
192
+ return [
193
+ 4,
194
+ bucket.put(key, html, {
195
+ httpMetadata: {
196
+ contentType: 'text/html; charset=utf-8'
197
+ },
198
+ customMetadata: _object_spread({
199
+ slug: slug,
200
+ brainRunId: brainRunId,
201
+ persist: persist ? 'true' : 'false',
202
+ createdAt: createdAt
203
+ }, (options === null || options === void 0 ? void 0 : options.ttl) !== undefined && {
204
+ ttl: String(options.ttl)
205
+ })
206
+ })
207
+ ];
208
+ case 1:
209
+ _state.sent();
210
+ // Register the page with MonitorDO for cleanup tracking
211
+ return [
212
+ 4,
213
+ monitorStub.registerPage(slug, brainRunId, persist)
214
+ ];
215
+ case 2:
216
+ _state.sent();
217
+ url = "".concat(baseUrl, "/pages/").concat(slug);
218
+ return [
219
+ 2,
220
+ _object_spread_props(_object_spread({
221
+ slug: slug,
222
+ url: url,
223
+ brainRunId: brainRunId,
224
+ persist: persist
225
+ }, (options === null || options === void 0 ? void 0 : options.ttl) !== undefined && {
226
+ ttl: options.ttl
227
+ }), {
228
+ createdAt: createdAt
229
+ })
230
+ ];
231
+ }
232
+ });
233
+ })();
234
+ },
235
+ get: function get(slug) {
236
+ return _async_to_generator(function() {
237
+ var key, r2Object;
238
+ return _ts_generator(this, function(_state) {
239
+ switch(_state.label){
240
+ case 0:
241
+ key = "pages/".concat(slug, ".html");
242
+ return [
243
+ 4,
244
+ bucket.get(key)
245
+ ];
246
+ case 1:
247
+ r2Object = _state.sent();
248
+ if (!r2Object) {
249
+ return [
250
+ 2,
251
+ null
252
+ ];
253
+ }
254
+ return [
255
+ 2,
256
+ r2Object.text()
257
+ ];
258
+ }
259
+ });
260
+ })();
261
+ },
262
+ exists: function exists(slug) {
263
+ return _async_to_generator(function() {
264
+ var key, r2Object, metadata, url;
265
+ return _ts_generator(this, function(_state) {
266
+ switch(_state.label){
267
+ case 0:
268
+ key = "pages/".concat(slug, ".html");
269
+ return [
270
+ 4,
271
+ bucket.head(key)
272
+ ];
273
+ case 1:
274
+ r2Object = _state.sent();
275
+ if (!r2Object) {
276
+ return [
277
+ 2,
278
+ null
279
+ ];
280
+ }
281
+ metadata = r2Object.customMetadata || {};
282
+ url = "".concat(baseUrl, "/pages/").concat(slug);
283
+ return [
284
+ 2,
285
+ _object_spread_props(_object_spread({
286
+ slug: metadata.slug || slug,
287
+ url: url,
288
+ brainRunId: metadata.brainRunId || '',
289
+ persist: metadata.persist === 'true'
290
+ }, metadata.ttl && {
291
+ ttl: Number(metadata.ttl)
292
+ }), {
293
+ createdAt: metadata.createdAt || r2Object.uploaded.toISOString()
294
+ })
295
+ ];
296
+ }
297
+ });
298
+ })();
299
+ },
300
+ update: function update(slug, html) {
301
+ return _async_to_generator(function() {
302
+ var key, existingObject, existingMetadata, url;
303
+ return _ts_generator(this, function(_state) {
304
+ switch(_state.label){
305
+ case 0:
306
+ key = "pages/".concat(slug, ".html");
307
+ return [
308
+ 4,
309
+ bucket.head(key)
310
+ ];
311
+ case 1:
312
+ existingObject = _state.sent();
313
+ if (!existingObject) {
314
+ throw new Error("Page '".concat(slug, "' not found"));
315
+ }
316
+ // Preserve existing metadata
317
+ existingMetadata = existingObject.customMetadata || {};
318
+ // Update with new HTML, preserving metadata
319
+ return [
320
+ 4,
321
+ bucket.put(key, html, {
322
+ httpMetadata: {
323
+ contentType: 'text/html; charset=utf-8'
324
+ },
325
+ customMetadata: existingMetadata
326
+ })
327
+ ];
328
+ case 2:
329
+ _state.sent();
330
+ url = "".concat(baseUrl, "/pages/").concat(slug);
331
+ return [
332
+ 2,
333
+ _object_spread_props(_object_spread({
334
+ slug: existingMetadata.slug || slug,
335
+ url: url,
336
+ brainRunId: existingMetadata.brainRunId || '',
337
+ persist: existingMetadata.persist === 'true'
338
+ }, existingMetadata.ttl && {
339
+ ttl: Number(existingMetadata.ttl)
340
+ }), {
341
+ createdAt: existingMetadata.createdAt || existingObject.uploaded.toISOString()
342
+ })
343
+ ];
344
+ }
345
+ });
346
+ })();
347
+ }
348
+ };
349
+ }
@@ -14,6 +14,7 @@ export interface Env {
14
14
  MONITOR_DO: DurableObjectNamespace<MonitorDO>;
15
15
  SCHEDULE_DO: DurableObjectNamespace<ScheduleDO>;
16
16
  RESOURCES_BUCKET: R2Bucket;
17
+ WORKER_URL?: string;
17
18
  }
18
19
  export declare class BrainRunnerDO extends DurableObject<Env> {
19
20
  private sql;
@@ -1 +1 @@
1
- {"version":3,"file":"brain-runner-do.d.ts","sourceRoot":"","sources":["../../src/brain-runner-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAwC,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,wBAAgB,WAAW,CAAC,iBAAiB,EAAE,kBAAkB,QAEhE;AAED,wBAAgB,WAAW,IAAI,kBAAkB,GAAG,IAAI,CAEvD;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,QAEjD;AAGD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAE/D;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAE/D;AAED,MAAM,WAAW,GAAG;IAClB,eAAe,EAAE,sBAAsB,CAAC;IACxC,UAAU,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,gBAAgB,EAAE,QAAQ,CAAC;CAC5B;AAwDD,qBAAa,aAAc,SAAQ,aAAa,CAAC,GAAG,CAAC;IACnD,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,eAAe,CAAgC;gBAE3C,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;YAOjC,mBAAmB;IA0E3B,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAStD,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAyF7B,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAyHhC,KAAK,CAAC,OAAO,EAAE,OAAO;CA4E7B"}
1
+ {"version":3,"file":"brain-runner-do.d.ts","sourceRoot":"","sources":["../../src/brain-runner-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAwC,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,wBAAgB,WAAW,CAAC,iBAAiB,EAAE,kBAAkB,QAEhE;AAED,wBAAgB,WAAW,IAAI,kBAAkB,GAAG,IAAI,CAEvD;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,QAEjD;AAGD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAE/D;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAE/D;AAED,MAAM,WAAW,GAAG;IAClB,eAAe,EAAE,sBAAsB,CAAC;IACxC,UAAU,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAwDD,qBAAa,aAAc,SAAQ,aAAa,CAAC,GAAG,CAAC;IACnD,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,eAAe,CAAgC;gBAE3C,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;YAOjC,mBAAmB;IA0E3B,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAStD,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAqG7B,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAqIhC,KAAK,CAAC,OAAO,EAAE,OAAO;CA4E7B"}
@@ -4,4 +4,5 @@ export { ScheduleDO } from './schedule-do.js';
4
4
  export { PositronicManifest, type BrainMetadata, type ResolutionResult } from './manifest.js';
5
5
  export { default as api } from './api.js';
6
6
  export { CloudflareR2Loader } from './r2-loader.js';
7
+ export { createPagesService } from './pages-service.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { PagesService } from '@positronic/core';
2
+ import type { R2Bucket } from '@cloudflare/workers-types';
3
+ import type { MonitorDO } from './monitor-do.js';
4
+ /**
5
+ * Creates a PagesService implementation that works directly with R2 and MonitorDO.
6
+ *
7
+ * @param brainRunId - The current brain run ID (used for page registration/cleanup)
8
+ * @param bucket - The R2 bucket for storing pages
9
+ * @param monitorStub - The MonitorDO stub for page registration
10
+ * @param baseUrl - The base URL for page URLs (e.g., "https://myapp.workers.dev")
11
+ */
12
+ export declare function createPagesService(brainRunId: string, bucket: R2Bucket, monitorStub: DurableObjectStub<MonitorDO>, baseUrl: string): PagesService;
13
+ //# sourceMappingURL=pages-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages-service.d.ts","sourceRoot":"","sources":["../../src/pages-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA2B,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,QAAQ,EAChB,WAAW,EAAE,iBAAiB,CAAC,SAAS,CAAC,EACzC,OAAO,EAAE,MAAM,GACd,YAAY,CAyGd"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@positronic/cloudflare",
3
- "version": "0.0.22",
3
+ "version": "0.0.24",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -31,9 +31,9 @@
31
31
  "clean": "rm -rf tsconfig.tsbuildinfo dist"
32
32
  },
33
33
  "dependencies": {
34
- "@positronic/core": "^0.0.22",
35
- "@positronic/spec": "^0.0.22",
36
- "@positronic/template-new-project": "^0.0.22",
34
+ "@positronic/core": "^0.0.24",
35
+ "@positronic/spec": "^0.0.24",
36
+ "@positronic/template-new-project": "^0.0.24",
37
37
  "aws4fetch": "^1.0.18",
38
38
  "caz": "^2.0.0",
39
39
  "cron-schedule": "^5.0.4",