@sixb/core 0.1.19 → 0.1.21
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/dist/actions/execution.d.ts.map +1 -1
- package/dist/actions/index.js +54 -47
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run-authorization.d.ts +9 -0
- package/dist/actions/run-authorization.d.ts.map +1 -1
- package/dist/activity/connection.d.ts +62 -0
- package/dist/activity/connection.d.ts.map +1 -0
- package/dist/activity/device.d.ts +8 -0
- package/dist/activity/device.d.ts.map +1 -0
- package/dist/activity/execution.d.ts +48 -0
- package/dist/activity/execution.d.ts.map +1 -0
- package/dist/activity/service.d.ts +79 -0
- package/dist/activity/service.d.ts.map +1 -0
- package/dist/activity/shares.d.ts +24 -0
- package/dist/activity/shares.d.ts.map +1 -0
- package/dist/activity/timeline.d.ts +96 -0
- package/dist/activity/timeline.d.ts.map +1 -0
- package/dist/agents/index.d.ts +2 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +63 -50
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/skills.d.ts.map +1 -1
- package/dist/agents/streams/index.js +3 -3
- package/dist/agents/streams/internal.js +3 -3
- package/dist/agents/types.d.ts +8 -8
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts +1 -1
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/artifacts/address.d.ts +48 -0
- package/dist/artifacts/address.d.ts.map +1 -0
- package/dist/artifacts/csv.d.ts +22 -0
- package/dist/artifacts/csv.d.ts.map +1 -0
- package/dist/artifacts/errors.d.ts +11 -0
- package/dist/artifacts/errors.d.ts.map +1 -0
- package/dist/artifacts/execution.d.ts +43 -0
- package/dist/artifacts/execution.d.ts.map +1 -0
- package/dist/artifacts/frames/assets.d.ts +28 -0
- package/dist/artifacts/frames/assets.d.ts.map +1 -0
- package/dist/artifacts/frames/grants.d.ts +37 -0
- package/dist/artifacts/frames/grants.d.ts.map +1 -0
- package/dist/artifacts/frames/index.d.ts +10 -0
- package/dist/artifacts/frames/index.d.ts.map +1 -0
- package/dist/artifacts/frames/index.js +892 -0
- package/dist/artifacts/frames/index.js.map +14 -0
- package/dist/artifacts/frames/kit.d.ts +66 -0
- package/dist/artifacts/frames/kit.d.ts.map +1 -0
- package/dist/artifacts/frames/probe.d.ts +41 -0
- package/dist/artifacts/frames/probe.d.ts.map +1 -0
- package/dist/artifacts/frames/protocol.d.ts +98 -0
- package/dist/artifacts/frames/protocol.d.ts.map +1 -0
- package/dist/artifacts/frames/runtime.d.ts +13 -0
- package/dist/artifacts/frames/runtime.d.ts.map +1 -0
- package/dist/artifacts/html.d.ts +6 -0
- package/dist/artifacts/html.d.ts.map +1 -0
- package/dist/artifacts/ids.d.ts +5 -0
- package/dist/artifacts/ids.d.ts.map +1 -0
- package/dist/artifacts/index.d.ts +16 -0
- package/dist/artifacts/index.d.ts.map +1 -0
- package/dist/artifacts/index.js +125 -0
- package/dist/artifacts/index.js.map +10 -0
- package/dist/artifacts/kinds.d.ts +5 -0
- package/dist/artifacts/kinds.d.ts.map +1 -0
- package/dist/artifacts/limits.d.ts +28 -0
- package/dist/artifacts/limits.d.ts.map +1 -0
- package/dist/artifacts/outline.d.ts +44 -0
- package/dist/artifacts/outline.d.ts.map +1 -0
- package/dist/artifacts/publish/files.d.ts +15 -0
- package/dist/artifacts/publish/files.d.ts.map +1 -0
- package/dist/artifacts/publish/index.d.ts +5 -0
- package/dist/artifacts/publish/index.d.ts.map +1 -0
- package/dist/artifacts/publish/index.js +36 -0
- package/dist/artifacts/publish/index.js.map +9 -0
- package/dist/artifacts/publish/publish.d.ts +52 -0
- package/dist/artifacts/publish/publish.d.ts.map +1 -0
- package/dist/artifacts/publish/references.d.ts +27 -0
- package/dist/artifacts/publish/references.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/document.d.ts +17 -0
- package/dist/artifacts/publish/validate/document.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/file.d.ts +8 -0
- package/dist/artifacts/publish/validate/file.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/sheet.d.ts +15 -0
- package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/slides.d.ts +21 -0
- package/dist/artifacts/publish/validate/slides.d.ts.map +1 -0
- package/dist/artifacts/references.d.ts +12 -0
- package/dist/artifacts/references.d.ts.map +1 -0
- package/dist/artifacts/resolve.d.ts +41 -0
- package/dist/artifacts/resolve.d.ts.map +1 -0
- package/dist/artifacts/theme.d.ts +19 -0
- package/dist/artifacts/theme.d.ts.map +1 -0
- package/dist/artifacts/warnings.d.ts +11 -0
- package/dist/artifacts/warnings.d.ts.map +1 -0
- package/dist/artifacts/workbook.d.ts +64 -0
- package/dist/artifacts/workbook.d.ts.map +1 -0
- package/dist/auth/cookies.d.ts +2 -4
- package/dist/auth/cookies.d.ts.map +1 -1
- package/dist/auth/index.d.ts +0 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +14 -20
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts +8 -10
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/session-cache.d.ts +1 -5
- package/dist/auth/session-cache.d.ts.map +1 -1
- package/dist/auth/strategy.js +1 -1
- package/dist/auth/types.d.ts +4 -8
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/validation.d.ts +0 -1
- package/dist/auth/validation.d.ts.map +1 -1
- package/dist/authorization/decision.d.ts +2 -4
- package/dist/authorization/decision.d.ts.map +1 -1
- package/dist/authorization/grant-kinds.d.ts +6 -8
- package/dist/authorization/grant-kinds.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +0 -1
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +7 -11
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/resolve.d.ts +1 -1
- package/dist/authorization/resolve.d.ts.map +1 -1
- package/dist/blob-storage/browser.js +1 -1
- package/dist/blob-storage/index.js +2 -2
- package/dist/blob-storage/internal.d.ts +1 -1
- package/dist/blob-storage/internal.d.ts.map +1 -1
- package/dist/blob-storage/internal.js +11 -5
- package/dist/blob-storage/internal.js.map +1 -1
- package/dist/blob-storage/media-type.d.ts +12 -0
- package/dist/blob-storage/media-type.d.ts.map +1 -1
- package/dist/bootstrap/index.js +54 -48
- package/dist/bootstrap/index.js.map +2 -2
- package/dist/{chunk-t6vq7bff.js → chunk-0bphap9y.js} +5 -5
- package/dist/{chunk-7mbzgd9m.js → chunk-1cc1xaf3.js} +3 -3
- package/dist/chunk-3jms7je7.js +14 -0
- package/dist/chunk-3jms7je7.js.map +10 -0
- package/dist/{chunk-s54c868q.js → chunk-3qct2mdc.js} +3 -13
- package/dist/chunk-3qct2mdc.js.map +12 -0
- package/dist/{chunk-6gmfggss.js → chunk-431pyp2c.js} +3 -3
- package/dist/{chunk-c85m1hyj.js → chunk-447a5c0p.js} +2 -2
- package/dist/chunk-48qjhh6v.js +185 -0
- package/dist/chunk-48qjhh6v.js.map +13 -0
- package/dist/{chunk-80mc0971.js → chunk-561r0yc9.js} +8 -8
- package/dist/{chunk-5e43w60z.js → chunk-5948n82c.js} +2 -2
- package/dist/{chunk-yzwja0mj.js → chunk-5hx48dnn.js} +2 -2
- package/dist/{chunk-tjb1mk5t.js → chunk-5vems3nx.js} +5 -6
- package/dist/{chunk-tjb1mk5t.js.map → chunk-5vems3nx.js.map} +3 -3
- package/dist/{chunk-aff7cyea.js → chunk-61y5xs4p.js} +563 -167
- package/dist/{chunk-aff7cyea.js.map → chunk-61y5xs4p.js.map} +12 -9
- package/dist/chunk-65abf64x.js +13 -0
- package/dist/chunk-65abf64x.js.map +10 -0
- package/dist/{chunk-z3y5kg1x.js → chunk-6eqsgvxk.js} +3 -3
- package/dist/{chunk-z3y5kg1x.js.map → chunk-6eqsgvxk.js.map} +2 -2
- package/dist/chunk-6rqgmkde.js +2028 -0
- package/dist/chunk-6rqgmkde.js.map +29 -0
- package/dist/{chunk-y7rqfrgg.js → chunk-6vb4st8k.js} +29 -38
- package/dist/chunk-6vb4st8k.js.map +23 -0
- package/dist/chunk-7q8t23v4.js +467 -0
- package/dist/chunk-7q8t23v4.js.map +14 -0
- package/dist/{chunk-kyzq4wy9.js → chunk-858emn8m.js} +17 -17
- package/dist/chunk-858emn8m.js.map +18 -0
- package/dist/{chunk-hvsb78a1.js → chunk-8frc8a4j.js} +26 -26
- package/dist/{chunk-hvsb78a1.js.map → chunk-8frc8a4j.js.map} +2 -2
- package/dist/{chunk-3zxk45er.js → chunk-8ncg20rd.js} +3 -68
- package/dist/{chunk-3zxk45er.js.map → chunk-8ncg20rd.js.map} +4 -5
- package/dist/{chunk-j2bp5ryw.js → chunk-918wwnaa.js} +495 -28
- package/dist/{chunk-j2bp5ryw.js.map → chunk-918wwnaa.js.map} +14 -12
- package/dist/{chunk-1f7wpmyp.js → chunk-9j4jw7as.js} +103 -110
- package/dist/chunk-9j4jw7as.js.map +14 -0
- package/dist/chunk-9kgkfg6v.js +502 -0
- package/dist/chunk-9kgkfg6v.js.map +14 -0
- package/dist/chunk-a3faa34j.js +74 -0
- package/dist/chunk-a3faa34j.js.map +10 -0
- package/dist/{chunk-ey3pyej1.js → chunk-akzryx9h.js} +347 -1174
- package/dist/{chunk-ey3pyej1.js.map → chunk-akzryx9h.js.map} +19 -25
- package/dist/chunk-arns890k.js +10 -0
- package/dist/chunk-arns890k.js.map +10 -0
- package/dist/{chunk-zrmy8zvw.js → chunk-bk9svbcq.js} +11 -11
- package/dist/{chunk-zrmy8zvw.js.map → chunk-bk9svbcq.js.map} +2 -2
- package/dist/{chunk-hkc3jct7.js → chunk-c06hmxyy.js} +2 -10
- package/dist/chunk-c06hmxyy.js.map +10 -0
- package/dist/{chunk-q1vkr2ys.js → chunk-c1rxbz5y.js} +3 -3
- package/dist/chunk-cfj9dfbb.js +288 -0
- package/dist/chunk-cfj9dfbb.js.map +12 -0
- package/dist/{chunk-4tcx876c.js → chunk-cn0fwwhy.js} +19 -19
- package/dist/{chunk-4tcx876c.js.map → chunk-cn0fwwhy.js.map} +1 -1
- package/dist/{chunk-gc4ntf7d.js → chunk-cwdzcv37.js} +1 -1
- package/dist/{chunk-fa02jy15.js → chunk-cy4mbddw.js} +1 -1
- package/dist/{chunk-7kg3k1m9.js → chunk-d09e3rax.js} +1 -1
- package/dist/chunk-d5rjr8c0.js +176 -0
- package/dist/chunk-d5rjr8c0.js.map +12 -0
- package/dist/{chunk-rhg02hxq.js → chunk-d7dnxdep.js} +3 -3
- package/dist/{chunk-b38szspf.js → chunk-dhcv7yxc.js} +1 -1
- package/dist/{chunk-b38szspf.js.map → chunk-dhcv7yxc.js.map} +1 -1
- package/dist/{chunk-enpsx8k5.js → chunk-dhdha526.js} +23 -21
- package/dist/chunk-dhdha526.js.map +10 -0
- package/dist/{chunk-8mx7qw3y.js → chunk-dvd2fp9q.js} +2 -2
- package/dist/{chunk-8mx7qw3y.js.map → chunk-dvd2fp9q.js.map} +3 -3
- package/dist/{chunk-bwjcehza.js → chunk-e17zdm62.js} +6 -12
- package/dist/{chunk-bwjcehza.js.map → chunk-e17zdm62.js.map} +3 -4
- package/dist/{chunk-tpn40322.js → chunk-e6k4thh5.js} +11 -10
- package/dist/{chunk-tpn40322.js.map → chunk-e6k4thh5.js.map} +3 -3
- package/dist/{chunk-tw03bsmb.js → chunk-eptrvnby.js} +224 -3
- package/dist/chunk-eptrvnby.js.map +12 -0
- package/dist/{chunk-xt1zt7gv.js → chunk-f4pamkt9.js} +30 -23
- package/dist/chunk-f4pamkt9.js.map +12 -0
- package/dist/chunk-ff5xkv0p.js +211 -0
- package/dist/chunk-ff5xkv0p.js.map +10 -0
- package/dist/{chunk-bpgy64fw.js → chunk-g257jwnc.js} +10 -4
- package/dist/{chunk-bpgy64fw.js.map → chunk-g257jwnc.js.map} +3 -3
- package/dist/chunk-g5bvzyyr.js +32 -0
- package/dist/chunk-g5bvzyyr.js.map +10 -0
- package/dist/{chunk-2jntasmh.js → chunk-hcbyfxbe.js} +25 -49
- package/dist/chunk-hcbyfxbe.js.map +12 -0
- package/dist/chunk-hke9aeen.js +9 -0
- package/dist/chunk-hke9aeen.js.map +10 -0
- package/dist/{chunk-1sr8ryzk.js → chunk-hwksyjks.js} +122 -1
- package/dist/{chunk-1sr8ryzk.js.map → chunk-hwksyjks.js.map} +3 -3
- package/dist/chunk-jcfw4h7m.js +9 -0
- package/dist/chunk-jcfw4h7m.js.map +10 -0
- package/dist/{chunk-85yvv5n0.js → chunk-k43ct2ke.js} +20 -11
- package/dist/chunk-k43ct2ke.js.map +12 -0
- package/dist/{chunk-dnmadg9k.js → chunk-kge7k6ey.js} +40 -8
- package/dist/chunk-kge7k6ey.js.map +15 -0
- package/dist/{chunk-wz0xs816.js → chunk-ky3j490c.js} +2 -2
- package/dist/chunk-mjddfa7k.js +129 -0
- package/dist/chunk-mjddfa7k.js.map +12 -0
- package/dist/{chunk-3gnrh4ve.js → chunk-nn5xnx3s.js} +86 -111
- package/dist/chunk-nn5xnx3s.js.map +40 -0
- package/dist/{chunk-rz53yb4v.js → chunk-q5e5tv4b.js} +35 -7
- package/dist/{chunk-rz53yb4v.js.map → chunk-q5e5tv4b.js.map} +3 -3
- package/dist/{chunk-vyf9kfqf.js → chunk-q7gn29y3.js} +1 -1
- package/dist/{chunk-d2ync1v3.js → chunk-rmakanzx.js} +10 -12
- package/dist/{chunk-d2ync1v3.js.map → chunk-rmakanzx.js.map} +3 -4
- package/dist/{chunk-v9xd5wzd.js → chunk-s7jg7pmn.js} +1 -1
- package/dist/chunk-tbc1ngpd.js +642 -0
- package/dist/chunk-tbc1ngpd.js.map +18 -0
- package/dist/chunk-twe4dx8p.js +676 -0
- package/dist/chunk-twe4dx8p.js.map +15 -0
- package/dist/{chunk-nre82s12.js → chunk-vf57cr4t.js} +2 -2
- package/dist/{chunk-9ybhtmg4.js → chunk-vvxtn22d.js} +1 -1
- package/dist/{chunk-jhm3zsa7.js → chunk-wkv3h3q7.js} +64 -2
- package/dist/{chunk-jhm3zsa7.js.map → chunk-wkv3h3q7.js.map} +3 -3
- package/dist/chunk-x0v3jd47.js +124 -0
- package/dist/chunk-x0v3jd47.js.map +10 -0
- package/dist/{chunk-7t429e3f.js → chunk-xvsc5m8n.js} +1 -1
- package/dist/{chunk-kg5j6fct.js → chunk-y5tah2kf.js} +1 -1
- package/dist/{chunk-52bk93x8.js → chunk-z58tm0hm.js} +2 -2
- package/dist/datasets/builders.d.ts +15 -2
- package/dist/datasets/builders.d.ts.map +1 -1
- package/dist/datasets/column-index.d.ts +7 -0
- package/dist/datasets/column-index.d.ts.map +1 -0
- package/dist/datasets/execution.d.ts +3 -2
- package/dist/datasets/execution.d.ts.map +1 -1
- package/dist/datasets/write.js +8 -8
- package/dist/deploy/internal.js +4 -3
- package/dist/deploy/internal.js.map +4 -4
- package/dist/deploy/services.d.ts.map +1 -1
- package/dist/deploy/types.d.ts +1 -2
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/error-reporting/internal.js +4 -4
- package/dist/errors/internal.d.ts +1 -0
- package/dist/errors/internal.d.ts.map +1 -1
- package/dist/errors/internal.js +7 -4
- package/dist/errors/internal.js.map +1 -1
- package/dist/events/execution.d.ts +12 -2
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/index.js +4 -4
- package/dist/execution/agent.js +56 -49
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorization.d.ts.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +52 -11
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/object-reader-clearance.d.ts +41 -0
- package/dist/execution/object-reader-clearance.d.ts.map +1 -0
- package/dist/execution/object-reader-ontology.d.ts +12 -0
- package/dist/execution/object-reader-ontology.d.ts.map +1 -0
- package/dist/execution/object-reader-security.d.ts +45 -0
- package/dist/execution/object-reader-security.d.ts.map +1 -0
- package/dist/execution/primitive.js +54 -47
- package/dist/execution/primitive.js.map +1 -1
- package/dist/execution/request.js +49 -42
- package/dist/execution/request.js.map +2 -2
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +23 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +111 -109
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/in-memory.d.ts +1 -0
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.d.ts +6 -3
- package/dist/lake-storage/index.d.ts.map +1 -1
- package/dist/lake-storage/index.js +21 -13
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/lineage.d.ts +94 -0
- package/dist/lake-storage/lineage.d.ts.map +1 -0
- package/dist/lake-storage/sql-transforms.d.ts +45 -0
- package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
- package/dist/lake-storage/types.d.ts +55 -1
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/lake-storage/version-inputs.d.ts +14 -3
- package/dist/lake-storage/version-inputs.d.ts.map +1 -1
- package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
- package/dist/materializer/index.js +31 -30
- package/dist/materializer/index.js.map +1 -1
- package/dist/models/execution/index.js +26 -25
- package/dist/models/execution/index.js.map +1 -1
- package/dist/objects/clearance-redaction.d.ts +27 -0
- package/dist/objects/clearance-redaction.d.ts.map +1 -0
- package/dist/objects/index.js +54 -47
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/link/authorization.d.ts +8 -5
- package/dist/objects/link/authorization.d.ts.map +1 -1
- package/dist/objects/link/upsert-batch.d.ts.map +1 -1
- package/dist/objects/object/delete.d.ts.map +1 -1
- package/dist/objects/object/upsert-batch.d.ts.map +1 -1
- package/dist/objects/object/upsert.d.ts.map +1 -1
- package/dist/objects/property-clearance.d.ts +47 -24
- package/dist/objects/property-clearance.d.ts.map +1 -1
- package/dist/objects/query/clearance-admission.d.ts +10 -0
- package/dist/objects/query/clearance-admission.d.ts.map +1 -0
- package/dist/objects/query/index.js +29 -28
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/link-query-clearance.d.ts +21 -0
- package/dist/objects/query/link-query-clearance.d.ts.map +1 -0
- package/dist/objects/vectors/handle.d.ts.map +1 -1
- package/dist/objects/vectors/profile.d.ts +5 -0
- package/dist/objects/vectors/profile.d.ts.map +1 -1
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/docs-markdown.d.ts +1 -1
- package/dist/ontology/docs-markdown.d.ts.map +1 -1
- package/dist/ontology/index.js +7 -7
- package/dist/ontology/internal.js +4 -4
- package/dist/ontology/internal.js.map +1 -1
- package/dist/pipelines/index.d.ts +2 -0
- package/dist/pipelines/index.d.ts.map +1 -1
- package/dist/pipelines/index.js +47 -35
- package/dist/pipelines/index.js.map +1 -1
- package/dist/pipelines/lineage.d.ts +17 -0
- package/dist/pipelines/lineage.d.ts.map +1 -0
- package/dist/projections/internal.d.ts +2 -2
- package/dist/projections/internal.js +30 -29
- package/dist/projections/internal.js.map +1 -1
- package/dist/runtime/create.d.ts +3 -0
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +6 -0
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +2 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/internal.js +46 -42
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/ontology-mutations.d.ts +2 -0
- package/dist/runtime/ontology-mutations.d.ts.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +8 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/sandboxes/auth.d.ts +16 -0
- package/dist/sandboxes/auth.d.ts.map +1 -1
- package/dist/sandboxes/config.d.ts.map +1 -1
- package/dist/sandboxes/configuration.d.ts +26 -0
- package/dist/sandboxes/configuration.d.ts.map +1 -1
- package/dist/sandboxes/index.d.ts +1 -1
- package/dist/sandboxes/index.d.ts.map +1 -1
- package/dist/sandboxes/index.js +14 -13
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/sandboxes/sandbox.d.ts +28 -5
- package/dist/sandboxes/sandbox.d.ts.map +1 -1
- package/dist/security/applied-markings-contribution.d.ts +58 -0
- package/dist/security/applied-markings-contribution.d.ts.map +1 -0
- package/dist/security/applied-markings-host.d.ts +10 -0
- package/dist/security/applied-markings-host.d.ts.map +1 -0
- package/dist/security/applied-markings-snapshot.d.ts +67 -0
- package/dist/security/applied-markings-snapshot.d.ts.map +1 -0
- package/dist/security/applied-markings.d.ts +73 -0
- package/dist/security/applied-markings.d.ts.map +1 -0
- package/dist/security/builders.d.ts.map +1 -1
- package/dist/security/dataset-version-markings.d.ts +47 -0
- package/dist/security/dataset-version-markings.d.ts.map +1 -0
- package/dist/security/every.d.ts +1 -4
- package/dist/security/every.d.ts.map +1 -1
- package/dist/security/grants.d.ts +4 -5
- package/dist/security/grants.d.ts.map +1 -1
- package/dist/security/index.d.ts +2 -2
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/internal.d.ts +15 -0
- package/dist/security/internal.d.ts.map +1 -0
- package/dist/security/internal.js +135 -0
- package/dist/security/internal.js.map +10 -0
- package/dist/security/marking-propagation.d.ts +62 -0
- package/dist/security/marking-propagation.d.ts.map +1 -0
- package/dist/security/marking-sets.d.ts +14 -0
- package/dist/security/marking-sets.d.ts.map +1 -0
- package/dist/security/markings.d.ts +6 -3
- package/dist/security/markings.d.ts.map +1 -1
- package/dist/security/membership-policies.d.ts.map +1 -1
- package/dist/security/pipeline-markings.d.ts +20 -0
- package/dist/security/pipeline-markings.d.ts.map +1 -0
- package/dist/security/project.d.ts +4 -0
- package/dist/security/project.d.ts.map +1 -0
- package/dist/security/projection-markings.d.ts +71 -0
- package/dist/security/projection-markings.d.ts.map +1 -0
- package/dist/security/public.d.ts +10 -0
- package/dist/security/public.d.ts.map +1 -0
- package/dist/security/public.js +10 -0
- package/dist/security/public.js.map +9 -0
- package/dist/security/redactions.d.ts +4 -1
- package/dist/security/redactions.d.ts.map +1 -1
- package/dist/security/registry.d.ts +0 -1
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +34 -19
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +0 -6
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/shares/internal.js +25 -24
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +3 -3
- package/dist/storage/action-runs/in-memory.d.ts +4 -0
- package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/action-runs/types.d.ts +8 -0
- package/dist/storage/action-runs/types.d.ts.map +1 -1
- package/dist/storage/activity/in-memory.d.ts +55 -0
- package/dist/storage/activity/in-memory.d.ts.map +1 -0
- package/dist/storage/activity/index.d.ts +3 -0
- package/dist/storage/activity/index.d.ts.map +1 -0
- package/dist/storage/activity/policy.d.ts +96 -0
- package/dist/storage/activity/policy.d.ts.map +1 -0
- package/dist/storage/activity/types.d.ts +191 -0
- package/dist/storage/activity/types.d.ts.map +1 -0
- package/dist/storage/agents/in-memory.d.ts +4 -0
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +2 -5
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +10 -9
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +3 -3
- package/dist/storage/artifacts/errors.d.ts +8 -0
- package/dist/storage/artifacts/errors.d.ts.map +1 -0
- package/dist/storage/artifacts/in-memory.d.ts +34 -0
- package/dist/storage/artifacts/in-memory.d.ts.map +1 -0
- package/dist/storage/artifacts/index.d.ts +5 -0
- package/dist/storage/artifacts/index.d.ts.map +1 -0
- package/dist/storage/artifacts/record.d.ts +17 -0
- package/dist/storage/artifacts/record.d.ts.map +1 -0
- package/dist/storage/artifacts/types.d.ts +184 -0
- package/dist/storage/artifacts/types.d.ts.map +1 -0
- package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/magic-links.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/oidc-attempts.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/sessions.d.ts +2 -11
- package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/shared.d.ts +1 -2
- package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
- package/dist/storage/auth/index.d.ts +1 -1
- package/dist/storage/auth/index.d.ts.map +1 -1
- package/dist/storage/auth/types.d.ts +20 -17
- package/dist/storage/auth/types.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +2 -2
- package/dist/storage/executions/in-memory.d.ts +2 -1
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/index.d.ts +1 -1
- package/dist/storage/executions/index.d.ts.map +1 -1
- package/dist/storage/executions/provider.d.ts +2 -0
- package/dist/storage/executions/provider.d.ts.map +1 -1
- package/dist/storage/executions/provider.js +9 -223
- package/dist/storage/executions/provider.js.map +3 -4
- package/dist/storage/executions/types.d.ts +31 -0
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/provider.js +12 -12
- package/dist/storage/in-memory/index.d.ts +8 -0
- package/dist/storage/in-memory/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +6 -4
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +47 -46
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +3 -0
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +66 -16
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/ontology/in-memory/sources.d.ts +2 -1
- package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
- package/dist/storage/ontology/index.d.ts +1 -1
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/sources.d.ts +15 -0
- package/dist/storage/ontology/sources.d.ts.map +1 -1
- package/dist/storage/projection-runs/provider.js +3 -3
- package/dist/storage/share-grants/in-memory.d.ts +2 -1
- package/dist/storage/share-grants/in-memory.d.ts.map +1 -1
- package/dist/storage/share-grants/index.d.ts +1 -1
- package/dist/storage/share-grants/index.d.ts.map +1 -1
- package/dist/storage/share-grants/types.d.ts +6 -0
- package/dist/storage/share-grants/types.d.ts.map +1 -1
- package/dist/storage/types.d.ts +4 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/in-memory.d.ts +4 -0
- package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +14 -13
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/storage/workflow-runs/types.d.ts +5 -0
- package/dist/storage/workflow-runs/types.d.ts.map +1 -1
- package/dist/syncs/index.js +35 -34
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/action-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/activity-storage-contract.d.ts +14 -0
- package/dist/testing/activity-storage-contract.d.ts.map +1 -0
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/artifact-storage-contract.d.ts +13 -0
- package/dist/testing/artifact-storage-contract.d.ts.map +1 -0
- package/dist/testing/auth-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +4493 -3225
- package/dist/testing/index.js.map +14 -12
- package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
- package/dist/testing/lake-storage-contract.d.ts +2 -0
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
- package/dist/webhooks/internal.js +28 -27
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +2 -2
- package/dist/workflows/builders.d.ts.map +1 -1
- package/dist/workflows/index.js +57 -51
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/types.d.ts +9 -0
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/validation.d.ts +7 -0
- package/dist/workflows/validation.d.ts.map +1 -1
- package/package.json +32 -2
- package/src/actions/execution.ts +18 -13
- package/src/actions/request.ts +18 -3
- package/src/actions/run-authorization.ts +23 -0
- package/src/activity/README.md +155 -0
- package/src/activity/connection.ts +217 -0
- package/src/activity/device.ts +41 -0
- package/src/activity/execution.ts +210 -0
- package/src/activity/service.ts +274 -0
- package/src/activity/shares.ts +62 -0
- package/src/activity/timeline.ts +424 -0
- package/src/agents/index.ts +8 -3
- package/src/agents/request.ts +5 -0
- package/src/agents/skills.ts +6 -0
- package/src/agents/types.ts +8 -8
- package/src/agents/validation.ts +2 -0
- package/src/artifacts/address.ts +132 -0
- package/src/artifacts/csv.ts +108 -0
- package/src/artifacts/errors.ts +21 -0
- package/src/artifacts/execution.ts +153 -0
- package/src/artifacts/frames/assets.ts +88 -0
- package/src/artifacts/frames/grants.ts +124 -0
- package/src/artifacts/frames/index.ts +15 -0
- package/src/artifacts/frames/kit.ts +392 -0
- package/src/artifacts/frames/probe.ts +309 -0
- package/src/artifacts/frames/protocol.ts +174 -0
- package/src/artifacts/frames/runtime.ts +213 -0
- package/src/artifacts/html.ts +25 -0
- package/src/artifacts/ids.ts +18 -0
- package/src/artifacts/index.ts +61 -0
- package/src/artifacts/kinds.ts +8 -0
- package/src/artifacts/limits.ts +27 -0
- package/src/artifacts/outline.ts +62 -0
- package/src/artifacts/publish/files.ts +87 -0
- package/src/artifacts/publish/index.ts +12 -0
- package/src/artifacts/publish/publish.ts +250 -0
- package/src/artifacts/publish/references.ts +130 -0
- package/src/artifacts/publish/validate/document.ts +114 -0
- package/src/artifacts/publish/validate/file.ts +19 -0
- package/src/artifacts/publish/validate/sheet.ts +251 -0
- package/src/artifacts/publish/validate/slides.ts +134 -0
- package/src/artifacts/references.ts +11 -0
- package/src/artifacts/resolve.ts +97 -0
- package/src/artifacts/theme.ts +116 -0
- package/src/artifacts/warnings.ts +10 -0
- package/src/artifacts/workbook.ts +315 -0
- package/src/auth/cookies.ts +3 -20
- package/src/auth/index.ts +0 -6
- package/src/auth/runtime.ts +59 -76
- package/src/auth/session-cache.ts +2 -9
- package/src/auth/types.ts +4 -8
- package/src/auth/validation.ts +0 -2
- package/src/authorization/decision.ts +13 -23
- package/src/authorization/grant-kinds.ts +33 -28
- package/src/authorization/index.ts +0 -1
- package/src/authorization/resolve.ts +10 -6
- package/src/blob-storage/internal.ts +1 -1
- package/src/blob-storage/media-type.ts +69 -0
- package/src/datasets/builders.ts +66 -2
- package/src/datasets/column-index.ts +19 -0
- package/src/datasets/execution.ts +23 -9
- package/src/deploy/services.ts +0 -1
- package/src/deploy/types.ts +1 -2
- package/src/deploy/validation.ts +3 -1
- package/src/errors/internal.ts +1 -0
- package/src/events/execution.ts +134 -21
- package/src/execution/authorization.ts +11 -5
- package/src/execution/authorized-object-reader.ts +270 -256
- package/src/execution/object-reader-clearance.ts +91 -0
- package/src/execution/object-reader-ontology.ts +63 -0
- package/src/execution/object-reader-security.ts +146 -0
- package/src/http/api-routes.ts +125 -0
- package/src/index.ts +72 -17
- package/src/lake-storage/in-memory.ts +26 -3
- package/src/lake-storage/index.ts +13 -1
- package/src/lake-storage/lineage.ts +385 -0
- package/src/lake-storage/sql-transforms.ts +45 -0
- package/src/lake-storage/types.ts +59 -1
- package/src/lake-storage/version-inputs.ts +35 -6
- package/src/maintenance/ontology-maintenance.ts +15 -0
- package/src/models/execution/embedding.ts +6 -6
- package/src/objects/clearance-redaction.ts +138 -0
- package/src/objects/link/authorization.ts +27 -7
- package/src/objects/link/remove.ts +2 -2
- package/src/objects/link/upsert-batch.ts +7 -5
- package/src/objects/link/upsert.ts +2 -2
- package/src/objects/object/delete.ts +2 -0
- package/src/objects/object/upsert-batch.ts +2 -4
- package/src/objects/object/upsert.ts +2 -3
- package/src/objects/property-clearance.ts +171 -152
- package/src/objects/query/clearance-admission.ts +112 -0
- package/src/objects/query/link-query-clearance.ts +73 -0
- package/src/objects/vectors/README.md +4 -0
- package/src/objects/vectors/handle.ts +11 -2
- package/src/objects/vectors/indexing-generate.ts +2 -2
- package/src/objects/vectors/profile.ts +5 -0
- package/src/ontology/builders.ts +12 -1
- package/src/ontology/docs-markdown.ts +1 -1
- package/src/pipelines/index.ts +2 -0
- package/src/pipelines/lineage.ts +45 -0
- package/src/projections/internal.ts +2 -2
- package/src/runtime/create.ts +4 -0
- package/src/runtime/host.ts +55 -0
- package/src/runtime/internal.ts +2 -0
- package/src/runtime/ontology-mutations.ts +19 -4
- package/src/runtime/resolve-definitions.ts +66 -3
- package/src/runtime/sixb.ts +18 -1
- package/src/sandboxes/README.md +29 -7
- package/src/sandboxes/auth.ts +16 -0
- package/src/sandboxes/config.ts +2 -7
- package/src/sandboxes/configuration.ts +61 -7
- package/src/sandboxes/index.ts +1 -0
- package/src/sandboxes/sandbox.ts +27 -5
- package/src/security/applied-markings-contribution.ts +277 -0
- package/src/security/applied-markings-host.ts +41 -0
- package/src/security/applied-markings-snapshot.ts +235 -0
- package/src/security/applied-markings.ts +405 -0
- package/src/security/builders.ts +7 -2
- package/src/security/dataset-version-markings.ts +163 -0
- package/src/security/every.ts +0 -4
- package/src/security/grants.ts +42 -27
- package/src/security/index.ts +3 -3
- package/src/security/internal.ts +18 -0
- package/src/security/marking-propagation.ts +255 -0
- package/src/security/marking-sets.ts +42 -0
- package/src/security/markings.ts +29 -178
- package/src/security/membership-policies.ts +3 -1
- package/src/security/pipeline-markings.ts +175 -0
- package/src/security/project.ts +8 -0
- package/src/security/projection-markings.ts +421 -0
- package/src/security/public.ts +10 -0
- package/src/security/redactions.ts +7 -2
- package/src/security/registry.ts +0 -8
- package/src/security/types.ts +38 -26
- package/src/security/validation.ts +28 -19
- package/src/storage/action-runs/in-memory.ts +18 -0
- package/src/storage/action-runs/types.ts +8 -0
- package/src/storage/activity/in-memory.ts +374 -0
- package/src/storage/activity/index.ts +27 -0
- package/src/storage/activity/policy.ts +430 -0
- package/src/storage/activity/types.ts +211 -0
- package/src/storage/agents/in-memory.ts +10 -0
- package/src/storage/agents/provider.ts +2 -13
- package/src/storage/agents/types.ts +10 -17
- package/src/storage/artifacts/errors.ts +16 -0
- package/src/storage/artifacts/in-memory.ts +240 -0
- package/src/storage/artifacts/index.ts +30 -0
- package/src/storage/artifacts/record.ts +200 -0
- package/src/storage/artifacts/types.ts +209 -0
- package/src/storage/auth/in-memory/auth-storage.ts +0 -18
- package/src/storage/auth/in-memory/magic-links.ts +0 -3
- package/src/storage/auth/in-memory/oidc-attempts.ts +0 -3
- package/src/storage/auth/in-memory/sessions.ts +22 -25
- package/src/storage/auth/in-memory/shared.ts +1 -10
- package/src/storage/auth/index.ts +2 -0
- package/src/storage/auth/types.ts +20 -18
- package/src/storage/executions/in-memory.ts +61 -1
- package/src/storage/executions/index.ts +3 -0
- package/src/storage/executions/provider.ts +12 -0
- package/src/storage/executions/types.ts +30 -0
- package/src/storage/in-memory/index.ts +16 -0
- package/src/storage/index.ts +63 -0
- package/src/storage/internal.ts +30 -0
- package/src/storage/ontology/in-memory/sources.ts +23 -0
- package/src/storage/ontology/index.ts +2 -0
- package/src/storage/ontology/sources.ts +17 -0
- package/src/storage/share-grants/in-memory.ts +8 -0
- package/src/storage/share-grants/index.ts +1 -0
- package/src/storage/share-grants/types.ts +8 -0
- package/src/storage/types.ts +4 -0
- package/src/storage/workflow-runs/in-memory.ts +16 -0
- package/src/storage/workflow-runs/types.ts +5 -0
- package/src/testing/action-run-storage-contract.ts +25 -0
- package/src/testing/activity-storage-contract.ts +840 -0
- package/src/testing/agent-storage-contract.ts +22 -21
- package/src/testing/artifact-storage-contract.ts +517 -0
- package/src/testing/auth-storage-contract.ts +61 -107
- package/src/testing/execution-storage-contract.ts +147 -3
- package/src/testing/index.ts +9 -0
- package/src/testing/lake-merge-storage-contract.ts +38 -0
- package/src/testing/lake-storage-contract.ts +247 -2
- package/src/testing/materializer-storage-contract.ts +1 -0
- package/src/testing/ontology-storage-contract.ts +57 -2
- package/src/testing/share-grant-storage-contract.ts +15 -0
- package/src/workflows/builders.ts +14 -0
- package/src/workflows/types.ts +9 -0
- package/src/workflows/validation.ts +72 -0
- package/dist/auth/audience.d.ts +0 -8
- package/dist/auth/audience.d.ts.map +0 -1
- package/dist/authorization/application-access.d.ts +0 -18
- package/dist/authorization/application-access.d.ts.map +0 -1
- package/dist/chunk-1f7wpmyp.js.map +0 -14
- package/dist/chunk-1k89ecfr.js +0 -85
- package/dist/chunk-1k89ecfr.js.map +0 -10
- package/dist/chunk-2jntasmh.js.map +0 -13
- package/dist/chunk-3gnrh4ve.js.map +0 -40
- package/dist/chunk-85yvv5n0.js.map +0 -12
- package/dist/chunk-9gyp8hg1.js +0 -363
- package/dist/chunk-9gyp8hg1.js.map +0 -14
- package/dist/chunk-dnmadg9k.js.map +0 -15
- package/dist/chunk-enpsx8k5.js.map +0 -10
- package/dist/chunk-hkc3jct7.js.map +0 -10
- package/dist/chunk-kyzq4wy9.js.map +0 -18
- package/dist/chunk-s16apyk9.js +0 -256
- package/dist/chunk-s16apyk9.js.map +0 -16
- package/dist/chunk-s54c868q.js.map +0 -12
- package/dist/chunk-tw03bsmb.js.map +0 -11
- package/dist/chunk-wwdfe68s.js +0 -128
- package/dist/chunk-wwdfe68s.js.map +0 -11
- package/dist/chunk-xt1zt7gv.js.map +0 -13
- package/dist/chunk-y7rqfrgg.js.map +0 -24
- package/dist/security/applications.d.ts +0 -15
- package/dist/security/applications.d.ts.map +0 -1
- package/src/auth/audience.ts +0 -28
- package/src/authorization/application-access.ts +0 -34
- package/src/security/applications.ts +0 -11
- /package/dist/{chunk-t6vq7bff.js.map → chunk-0bphap9y.js.map} +0 -0
- /package/dist/{chunk-7mbzgd9m.js.map → chunk-1cc1xaf3.js.map} +0 -0
- /package/dist/{chunk-6gmfggss.js.map → chunk-431pyp2c.js.map} +0 -0
- /package/dist/{chunk-c85m1hyj.js.map → chunk-447a5c0p.js.map} +0 -0
- /package/dist/{chunk-80mc0971.js.map → chunk-561r0yc9.js.map} +0 -0
- /package/dist/{chunk-5e43w60z.js.map → chunk-5948n82c.js.map} +0 -0
- /package/dist/{chunk-yzwja0mj.js.map → chunk-5hx48dnn.js.map} +0 -0
- /package/dist/{chunk-q1vkr2ys.js.map → chunk-c1rxbz5y.js.map} +0 -0
- /package/dist/{chunk-gc4ntf7d.js.map → chunk-cwdzcv37.js.map} +0 -0
- /package/dist/{chunk-fa02jy15.js.map → chunk-cy4mbddw.js.map} +0 -0
- /package/dist/{chunk-7kg3k1m9.js.map → chunk-d09e3rax.js.map} +0 -0
- /package/dist/{chunk-rhg02hxq.js.map → chunk-d7dnxdep.js.map} +0 -0
- /package/dist/{chunk-wz0xs816.js.map → chunk-ky3j490c.js.map} +0 -0
- /package/dist/{chunk-vyf9kfqf.js.map → chunk-q7gn29y3.js.map} +0 -0
- /package/dist/{chunk-v9xd5wzd.js.map → chunk-s7jg7pmn.js.map} +0 -0
- /package/dist/{chunk-nre82s12.js.map → chunk-vf57cr4t.js.map} +0 -0
- /package/dist/{chunk-9ybhtmg4.js.map → chunk-vvxtn22d.js.map} +0 -0
- /package/dist/{chunk-7t429e3f.js.map → chunk-xvsc5m8n.js.map} +0 -0
- /package/dist/{chunk-kg5j6fct.js.map → chunk-y5tah2kf.js.map} +0 -0
- /package/dist/{chunk-52bk93x8.js.map → chunk-z58tm0hm.js.map} +0 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { AuthorizationError, assertAuthorized } from "../authorization"
|
|
2
|
+
import { getAuthorizationRef } from "../execution/authorization"
|
|
3
|
+
import type { SixbRuntimeContext } from "../runtime/types"
|
|
4
|
+
import type { ActivityEventInput, ActivitySummary, ActivityUser } from "../storage/activity/types"
|
|
5
|
+
import {
|
|
6
|
+
type ActivityConnectionsPage,
|
|
7
|
+
type ActivityConnectionsQuery,
|
|
8
|
+
readActivityConnections,
|
|
9
|
+
} from "./connection"
|
|
10
|
+
import type {
|
|
11
|
+
ActivityCalendar,
|
|
12
|
+
ActivityCalendarQuery,
|
|
13
|
+
ActivityCaptureOptions,
|
|
14
|
+
ActivityCaptureResult,
|
|
15
|
+
ActivityPageQuery,
|
|
16
|
+
ActivityPeriodQuery,
|
|
17
|
+
ActivityService,
|
|
18
|
+
ActivitySource,
|
|
19
|
+
} from "./service"
|
|
20
|
+
import { type ActivityVisitView, nameSharedVisit, nameSharedVisits } from "./shares"
|
|
21
|
+
import {
|
|
22
|
+
ACTIVITY_TIMELINE_LIMIT,
|
|
23
|
+
type ActivityVisitTimeline,
|
|
24
|
+
composeActivityTimeline,
|
|
25
|
+
} from "./timeline"
|
|
26
|
+
|
|
27
|
+
export interface ActivityVisitList {
|
|
28
|
+
readonly visits: readonly ActivityVisitView[]
|
|
29
|
+
readonly hasMore: boolean
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface ActivityUsersResult {
|
|
33
|
+
/** `displayName` is the account's profile name; no other profile field is read. */
|
|
34
|
+
readonly users: readonly (ActivityUser & { readonly displayName?: string })[]
|
|
35
|
+
readonly hasMore: boolean
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** `sixb.activity`: the app's recorded visits. Every read needs `can.observe(project.activity)`. */
|
|
39
|
+
export interface ActivityRuntime {
|
|
40
|
+
/** Shared visits name their link's share: see `ActivityVisitView`. */
|
|
41
|
+
list(query: ActivityPageQuery): Promise<ActivityVisitList>
|
|
42
|
+
users(query: ActivityPageQuery): Promise<ActivityUsersResult>
|
|
43
|
+
summarize(query: ActivityPeriodQuery): Promise<ActivitySummary>
|
|
44
|
+
calendar(query: ActivityCalendarQuery): Promise<ActivityCalendar>
|
|
45
|
+
/**
|
|
46
|
+
* The visit's page views and interactions with the actions, workflows and Agent runs its session
|
|
47
|
+
* started, and the connection it came through. Bounded: see `truncated`.
|
|
48
|
+
*/
|
|
49
|
+
timeline(visitId: string): Promise<ActivityVisitTimeline | null>
|
|
50
|
+
/** A user's sign-ins, newest first, with the visits each opened. */
|
|
51
|
+
connections(query: ActivityConnectionsQuery): Promise<ActivityConnectionsPage>
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Recording, for the server's capture route only: it is not on `sixb.activity`, so project code
|
|
56
|
+
* cannot record visits under whatever authority it runs with.
|
|
57
|
+
*/
|
|
58
|
+
export interface ActivityCaptureRuntime {
|
|
59
|
+
/** The settings a browser session reads before it sends anything. */
|
|
60
|
+
captureOptions(): ActivityCaptureOptions
|
|
61
|
+
/** Records a batch for the calling user or shared session. */
|
|
62
|
+
capture(events: readonly ActivityEventInput[]): Promise<ActivityCaptureResult>
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Display names are read one account at a time; a page of users reads a few at once.
|
|
66
|
+
const PROFILE_READ_CONCURRENCY = 8
|
|
67
|
+
|
|
68
|
+
export function createActivityRuntime(
|
|
69
|
+
runtime: SixbRuntimeContext,
|
|
70
|
+
service: ActivityService
|
|
71
|
+
): ActivityRuntime {
|
|
72
|
+
const assertObservable = () => assertAuthorized(runtime, { kind: "activity.observe" })
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
async list(query) {
|
|
76
|
+
assertObservable()
|
|
77
|
+
const page = await service.list(query)
|
|
78
|
+
return { ...page, visits: await nameSharedVisits(runtime, page.visits) }
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
async users(query) {
|
|
82
|
+
assertObservable()
|
|
83
|
+
const page = await service.users(query)
|
|
84
|
+
|
|
85
|
+
// Only accounts in this bounded page are looked up, and only their name is kept.
|
|
86
|
+
const users = await mapInChunks(page.users, PROFILE_READ_CONCURRENCY, async (user) => {
|
|
87
|
+
const profile = await runtime.storage.auth?.users.getById({
|
|
88
|
+
projectId: runtime.projectId,
|
|
89
|
+
id: user.userId,
|
|
90
|
+
})
|
|
91
|
+
return profile?.displayName ? { ...user, displayName: profile.displayName } : user
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
return { users, hasMore: page.hasMore }
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
async summarize(query) {
|
|
98
|
+
assertObservable()
|
|
99
|
+
return service.summarize(query)
|
|
100
|
+
},
|
|
101
|
+
|
|
102
|
+
async calendar(query) {
|
|
103
|
+
assertObservable()
|
|
104
|
+
return service.calendar(query)
|
|
105
|
+
},
|
|
106
|
+
|
|
107
|
+
async timeline(visitId) {
|
|
108
|
+
assertObservable()
|
|
109
|
+
const page = await service.readWithSession({ id: visitId, limit: ACTIVITY_TIMELINE_LIMIT })
|
|
110
|
+
if (!page) {
|
|
111
|
+
return null
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const shared = await nameSharedVisit(runtime, page.visit)
|
|
115
|
+
return composeActivityTimeline(runtime, { ...shared, page }, new Date())
|
|
116
|
+
},
|
|
117
|
+
|
|
118
|
+
async connections(query) {
|
|
119
|
+
assertObservable()
|
|
120
|
+
return readActivityConnections(runtime, service, query, new Date())
|
|
121
|
+
},
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function createActivityCaptureRuntime(
|
|
126
|
+
runtime: SixbRuntimeContext,
|
|
127
|
+
service: ActivityService
|
|
128
|
+
): ActivityCaptureRuntime {
|
|
129
|
+
return {
|
|
130
|
+
captureOptions() {
|
|
131
|
+
captureSource(runtime)
|
|
132
|
+
return service.captureOptions
|
|
133
|
+
},
|
|
134
|
+
|
|
135
|
+
async capture(events) {
|
|
136
|
+
return service.capture(captureSource(runtime), events)
|
|
137
|
+
},
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const activityCaptureKey: unique symbol = Symbol("sixb.activityCapture")
|
|
142
|
+
|
|
143
|
+
interface ActivityCaptureOwner {
|
|
144
|
+
readonly [activityCaptureKey]?: ActivityCaptureRuntime
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export function registerActivityCaptureRuntime(
|
|
148
|
+
owner: object,
|
|
149
|
+
capture: ActivityCaptureRuntime
|
|
150
|
+
): void {
|
|
151
|
+
Object.defineProperty(owner, activityCaptureKey, {
|
|
152
|
+
configurable: false,
|
|
153
|
+
enumerable: false,
|
|
154
|
+
value: capture,
|
|
155
|
+
writable: false,
|
|
156
|
+
})
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/** The recording side of a bound SDK, such as a request's. */
|
|
160
|
+
export function getActivityCaptureRuntime(owner: object): ActivityCaptureRuntime {
|
|
161
|
+
const capture = (owner as ActivityCaptureOwner)[activityCaptureKey]
|
|
162
|
+
if (!capture) {
|
|
163
|
+
throw new Error("[Sixb] Activity capture is not registered for this execution.")
|
|
164
|
+
}
|
|
165
|
+
return capture
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* The session the batch came through, from verified authorization only. A browser never names an
|
|
170
|
+
* actor, and an access token or a trusted primitive is not a visit.
|
|
171
|
+
*/
|
|
172
|
+
function captureSource(runtime: SixbRuntimeContext): ActivitySource {
|
|
173
|
+
const ref = getAuthorizationRef(runtime.runtimeAuthorization)
|
|
174
|
+
|
|
175
|
+
if (
|
|
176
|
+
ref.type === "principal" &&
|
|
177
|
+
ref.principal.type === "user" &&
|
|
178
|
+
ref.credential?.type === "session"
|
|
179
|
+
) {
|
|
180
|
+
return {
|
|
181
|
+
actor: { type: "user", userId: ref.principal.id },
|
|
182
|
+
sessionId: ref.credential.id,
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (ref.type === "delegated") {
|
|
187
|
+
return {
|
|
188
|
+
actor: { type: "share", grantId: ref.delegation.grantId },
|
|
189
|
+
sessionId: ref.delegation.sessionId,
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
throw new AuthorizationError(
|
|
194
|
+
"activity.capture",
|
|
195
|
+
"[Sixb] Activity is recorded only for a signed-in user's session or a shared link's session."
|
|
196
|
+
)
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
async function mapInChunks<T, R>(
|
|
200
|
+
items: readonly T[],
|
|
201
|
+
size: number,
|
|
202
|
+
map: (item: T) => Promise<R>
|
|
203
|
+
): Promise<R[]> {
|
|
204
|
+
const results: R[] = []
|
|
205
|
+
for (let start = 0; start < items.length; start += size) {
|
|
206
|
+
const chunk = await Promise.all(items.slice(start, start + size).map(map))
|
|
207
|
+
results.push(...chunk)
|
|
208
|
+
}
|
|
209
|
+
return results
|
|
210
|
+
}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto"
|
|
2
|
+
import {
|
|
3
|
+
ACTIVITY_ID_MAX_LENGTH,
|
|
4
|
+
ACTIVITY_MAX_PAGE_SIZE,
|
|
5
|
+
ACTIVITY_MAX_PERIOD_MS,
|
|
6
|
+
ACTIVITY_MIN_IDLE_TIMEOUT_MS,
|
|
7
|
+
ACTIVITY_VISIT_ID_PATTERN,
|
|
8
|
+
validateActivityEvents,
|
|
9
|
+
} from "../storage/activity/policy"
|
|
10
|
+
import type {
|
|
11
|
+
ActivityActor,
|
|
12
|
+
ActivityCursor,
|
|
13
|
+
ActivityDay,
|
|
14
|
+
ActivityEventInput,
|
|
15
|
+
ActivityPeriodInput,
|
|
16
|
+
ActivitySessionVisits,
|
|
17
|
+
ActivityStorage,
|
|
18
|
+
ActivitySummary,
|
|
19
|
+
ActivityUsersPage,
|
|
20
|
+
ActivityVisitsPage,
|
|
21
|
+
ListActivitySessionVisitsInput,
|
|
22
|
+
StoredActivityVisitPage,
|
|
23
|
+
} from "../storage/activity/types"
|
|
24
|
+
import {
|
|
25
|
+
type ActivityConnectionsCursor,
|
|
26
|
+
type ActivityConnectionsQuery,
|
|
27
|
+
decodeActivityConnectionsCursor,
|
|
28
|
+
} from "./connection"
|
|
29
|
+
|
|
30
|
+
export interface ActivityOptions {
|
|
31
|
+
/**
|
|
32
|
+
* Record visits, page views and marked interactions in the project's app and its shared links.
|
|
33
|
+
* Off by default.
|
|
34
|
+
*/
|
|
35
|
+
readonly enabled?: boolean
|
|
36
|
+
/** A new visit begins after this long without foreground activity. Default: 30 minutes. */
|
|
37
|
+
readonly idleTimeoutMs?: number
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** What a browser needs to know before it sends anything. */
|
|
41
|
+
export interface ActivityCaptureOptions {
|
|
42
|
+
readonly enabled: boolean
|
|
43
|
+
readonly idleTimeoutMs: number
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface ActivityCaptureResult {
|
|
47
|
+
readonly status: "accepted" | "throttled" | "disabled"
|
|
48
|
+
readonly accepted: number
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Visits active in `[from, to)`, at most 31 days, and the page views received in it. */
|
|
52
|
+
export interface ActivityPeriodQuery {
|
|
53
|
+
readonly from: Date
|
|
54
|
+
readonly to: Date
|
|
55
|
+
/** Only this account's visits. */
|
|
56
|
+
readonly userId?: string
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface ActivityPageQuery extends ActivityPeriodQuery {
|
|
60
|
+
/** 1 to 100. Default: 50. */
|
|
61
|
+
readonly limit?: number
|
|
62
|
+
/** The last row of the previous page: its `lastSeenAt`, and its visit or user id. */
|
|
63
|
+
readonly before?: ActivityCursor
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface ActivityCalendarQuery {
|
|
67
|
+
readonly userId: string
|
|
68
|
+
/** A UTC calendar year. */
|
|
69
|
+
readonly year: number
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface ActivityCalendar {
|
|
73
|
+
readonly userId: string
|
|
74
|
+
readonly year: number
|
|
75
|
+
readonly days: readonly ActivityDay[]
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** The session whose browser sent a batch, from its verified authorization. */
|
|
79
|
+
export interface ActivitySource {
|
|
80
|
+
readonly actor: ActivityActor
|
|
81
|
+
readonly sessionId: string
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const DEFAULT_IDLE_TIMEOUT_MS = 30 * 60_000
|
|
85
|
+
const ACTIVITY_CONNECTION_VISITS = 5
|
|
86
|
+
const MAX_IDLE_TIMEOUT_MS = 24 * 60 * 60_000
|
|
87
|
+
|
|
88
|
+
/** Validates queries and holds the project's activity settings. Authorization is the caller's. */
|
|
89
|
+
export class ActivityService {
|
|
90
|
+
readonly captureOptions: ActivityCaptureOptions
|
|
91
|
+
|
|
92
|
+
constructor(
|
|
93
|
+
private readonly projectId: string,
|
|
94
|
+
private readonly storage: ActivityStorage | undefined,
|
|
95
|
+
options: ActivityOptions = {},
|
|
96
|
+
private readonly now = () => new Date()
|
|
97
|
+
) {
|
|
98
|
+
const idleTimeoutMs = options.idleTimeoutMs ?? DEFAULT_IDLE_TIMEOUT_MS
|
|
99
|
+
if (
|
|
100
|
+
!Number.isSafeInteger(idleTimeoutMs) ||
|
|
101
|
+
idleTimeoutMs < ACTIVITY_MIN_IDLE_TIMEOUT_MS ||
|
|
102
|
+
idleTimeoutMs > MAX_IDLE_TIMEOUT_MS
|
|
103
|
+
) {
|
|
104
|
+
throw new Error(
|
|
105
|
+
`[Sixb] activity.idleTimeoutMs must be an integer between ${ACTIVITY_MIN_IDLE_TIMEOUT_MS} and ${MAX_IDLE_TIMEOUT_MS} milliseconds.`
|
|
106
|
+
)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
this.captureOptions = Object.freeze({ enabled: options.enabled === true, idleTimeoutMs })
|
|
110
|
+
|
|
111
|
+
if (this.captureOptions.enabled && !storage) {
|
|
112
|
+
throw new Error(
|
|
113
|
+
"[Sixb] activity.enabled needs a storage with an activity store, such as a migrated SQLite or PostgreSQL storage."
|
|
114
|
+
)
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async capture(
|
|
119
|
+
source: ActivitySource,
|
|
120
|
+
events: readonly ActivityEventInput[]
|
|
121
|
+
): Promise<ActivityCaptureResult> {
|
|
122
|
+
validateActivityEvents(events)
|
|
123
|
+
|
|
124
|
+
if (!this.captureOptions.enabled) {
|
|
125
|
+
return { status: "disabled", accepted: 0 }
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return this.requireStorage().append({
|
|
129
|
+
projectId: this.projectId,
|
|
130
|
+
actor: source.actor,
|
|
131
|
+
sessionId: source.sessionId,
|
|
132
|
+
events,
|
|
133
|
+
now: this.now(),
|
|
134
|
+
idleTimeoutMs: this.captureOptions.idleTimeoutMs,
|
|
135
|
+
newVisitId: `visit_${randomUUID()}`,
|
|
136
|
+
})
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
list(query: ActivityPageQuery): Promise<ActivityVisitsPage> {
|
|
140
|
+
return this.requireStorage().list({
|
|
141
|
+
...this.period(query),
|
|
142
|
+
limit: pageLimit(query.limit),
|
|
143
|
+
before: cursor(query.before),
|
|
144
|
+
})
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
users(query: ActivityPageQuery): Promise<ActivityUsersPage> {
|
|
148
|
+
return this.requireStorage().users({
|
|
149
|
+
...this.period(query),
|
|
150
|
+
limit: pageLimit(query.limit),
|
|
151
|
+
before: cursor(query.before),
|
|
152
|
+
})
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
summarize(query: ActivityPeriodQuery): Promise<ActivitySummary> {
|
|
156
|
+
return this.requireStorage().summarize(this.period(query))
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
async calendar(query: ActivityCalendarQuery): Promise<ActivityCalendar> {
|
|
160
|
+
validateUserId(query.userId)
|
|
161
|
+
|
|
162
|
+
if (!Number.isSafeInteger(query.year) || query.year < 1970 || query.year > 9998) {
|
|
163
|
+
throw new Error("[Sixb] Activity calendar year must be between 1970 and 9998.")
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const days = await this.requireStorage().calendar({
|
|
167
|
+
projectId: this.projectId,
|
|
168
|
+
userId: query.userId,
|
|
169
|
+
from: new Date(Date.UTC(query.year, 0, 1)),
|
|
170
|
+
to: new Date(Date.UTC(query.year + 1, 0, 1)),
|
|
171
|
+
})
|
|
172
|
+
|
|
173
|
+
return { userId: query.userId, year: query.year, days }
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* A visit, its first page views, and the session it belongs to: the timeline joins on it, and it
|
|
178
|
+
* never leaves core.
|
|
179
|
+
*/
|
|
180
|
+
readWithSession(input: {
|
|
181
|
+
readonly id: string
|
|
182
|
+
readonly limit: number
|
|
183
|
+
}): Promise<StoredActivityVisitPage | null> {
|
|
184
|
+
if (typeof input.id !== "string" || !ACTIVITY_VISIT_ID_PATTERN.test(input.id)) {
|
|
185
|
+
throw new Error("[Sixb] Invalid activity visit id.")
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return this.requireStorage().read({
|
|
189
|
+
projectId: this.projectId,
|
|
190
|
+
id: input.id,
|
|
191
|
+
limit: input.limit,
|
|
192
|
+
})
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
connectionsQuery(query: ActivityConnectionsQuery): {
|
|
196
|
+
readonly userId: string
|
|
197
|
+
readonly limit: number
|
|
198
|
+
readonly before?: ActivityConnectionsCursor
|
|
199
|
+
} {
|
|
200
|
+
validateUserId(query.userId)
|
|
201
|
+
|
|
202
|
+
return {
|
|
203
|
+
userId: query.userId,
|
|
204
|
+
limit: pageLimit(query.limit ?? 20),
|
|
205
|
+
...(query.cursor === undefined
|
|
206
|
+
? {}
|
|
207
|
+
: { before: decodeActivityConnectionsCursor(query.cursor) }),
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/** Each session's visit count and latest visits: a connection shows those, the calendar the rest. */
|
|
212
|
+
sessionVisits(
|
|
213
|
+
input: Omit<ListActivitySessionVisitsInput, "projectId" | "limit">
|
|
214
|
+
): Promise<readonly ActivitySessionVisits[]> {
|
|
215
|
+
return this.requireStorage().sessionVisits({
|
|
216
|
+
...input,
|
|
217
|
+
projectId: this.projectId,
|
|
218
|
+
limit: ACTIVITY_CONNECTION_VISITS,
|
|
219
|
+
})
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
private period(query: ActivityPeriodQuery): ActivityPeriodInput {
|
|
223
|
+
if (query.userId !== undefined) {
|
|
224
|
+
validateUserId(query.userId)
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const from = query.from.getTime()
|
|
228
|
+
const to = query.to.getTime()
|
|
229
|
+
if (
|
|
230
|
+
!Number.isFinite(from) ||
|
|
231
|
+
!Number.isFinite(to) ||
|
|
232
|
+
from >= to ||
|
|
233
|
+
to - from > ACTIVITY_MAX_PERIOD_MS
|
|
234
|
+
) {
|
|
235
|
+
throw new Error("[Sixb] Activity queries require an ordered period of at most 31 days.")
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
return { projectId: this.projectId, from: query.from, to: query.to, userId: query.userId }
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
private requireStorage(): ActivityStorage {
|
|
242
|
+
if (!this.storage) {
|
|
243
|
+
throw new Error("[Sixb] This project's storage has no activity store.")
|
|
244
|
+
}
|
|
245
|
+
return this.storage
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
function validateUserId(value: string): void {
|
|
250
|
+
if (typeof value !== "string" || !value.trim() || value.length > ACTIVITY_ID_MAX_LENGTH) {
|
|
251
|
+
throw new Error(
|
|
252
|
+
`[Sixb] Activity userId must be a nonempty user id of at most ${ACTIVITY_ID_MAX_LENGTH} characters.`
|
|
253
|
+
)
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function cursor(value: ActivityCursor | undefined): ActivityCursor | undefined {
|
|
258
|
+
if (
|
|
259
|
+
value &&
|
|
260
|
+
(!Number.isFinite(value.at.getTime()) ||
|
|
261
|
+
!value.id.trim() ||
|
|
262
|
+
value.id.length > ACTIVITY_ID_MAX_LENGTH)
|
|
263
|
+
) {
|
|
264
|
+
throw new Error("[Sixb] Invalid activity cursor.")
|
|
265
|
+
}
|
|
266
|
+
return value
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
function pageLimit(value = 50): number {
|
|
270
|
+
if (!Number.isSafeInteger(value) || value < 1 || value > ACTIVITY_MAX_PAGE_SIZE) {
|
|
271
|
+
throw new Error(`[Sixb] Activity page size must be between 1 and ${ACTIVITY_MAX_PAGE_SIZE}.`)
|
|
272
|
+
}
|
|
273
|
+
return value
|
|
274
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { SixbRuntimeContext } from "../runtime/types"
|
|
2
|
+
import type { ActivityActor, ActivityVisit } from "../storage/activity/types"
|
|
3
|
+
import type { ShareGrantRecord } from "../storage/share-grants"
|
|
4
|
+
|
|
5
|
+
/** Who a visit belongs to, as `sixb.activity` returns it: a shared link also names its share. */
|
|
6
|
+
export type ActivityVisitActor =
|
|
7
|
+
| Extract<ActivityActor, { readonly type: "user" }>
|
|
8
|
+
| (Extract<ActivityActor, { readonly type: "share" }> & {
|
|
9
|
+
/** The link's share definition; absent once its grant is gone. */
|
|
10
|
+
readonly definitionId?: string
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
/** A visit as `sixb.activity` returns it. */
|
|
14
|
+
export interface ActivityVisitView extends Omit<ActivityVisit, "actor"> {
|
|
15
|
+
readonly actor: ActivityVisitActor
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Visits named by their links' shares, from one grant read for all of them. */
|
|
19
|
+
export async function nameSharedVisits(
|
|
20
|
+
runtime: SixbRuntimeContext,
|
|
21
|
+
visits: readonly ActivityVisit[]
|
|
22
|
+
): Promise<readonly ActivityVisitView[]> {
|
|
23
|
+
const grants = await readGrants(runtime, visits)
|
|
24
|
+
return visits.map((visit) => withShare(visit, grants))
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** One visit named by its link's share, with that link's grant when it still exists. */
|
|
28
|
+
export async function nameSharedVisit(
|
|
29
|
+
runtime: SixbRuntimeContext,
|
|
30
|
+
visit: ActivityVisit
|
|
31
|
+
): Promise<{ readonly visit: ActivityVisitView; readonly grant?: ShareGrantRecord }> {
|
|
32
|
+
const grants = await readGrants(runtime, [visit])
|
|
33
|
+
const grant = visit.actor.type === "share" ? grants.get(visit.actor.grantId) : undefined
|
|
34
|
+
|
|
35
|
+
return { visit: withShare(visit, grants), ...(grant === undefined ? {} : { grant }) }
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async function readGrants(
|
|
39
|
+
runtime: SixbRuntimeContext,
|
|
40
|
+
visits: readonly ActivityVisit[]
|
|
41
|
+
): Promise<ReadonlyMap<string, ShareGrantRecord>> {
|
|
42
|
+
const ids = visits.flatMap((visit) => (visit.actor.type === "share" ? [visit.actor.grantId] : []))
|
|
43
|
+
if (ids.length === 0 || !runtime.storage.shareGrants) {
|
|
44
|
+
return new Map()
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const grants = await runtime.storage.shareGrants.getByIds({ projectId: runtime.projectId, ids })
|
|
48
|
+
return new Map(grants.map((grant) => [grant.id, grant]))
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function withShare(
|
|
52
|
+
visit: ActivityVisit,
|
|
53
|
+
grants: ReadonlyMap<string, ShareGrantRecord>
|
|
54
|
+
): ActivityVisitView {
|
|
55
|
+
const { actor } = visit
|
|
56
|
+
const grant = actor.type === "share" ? grants.get(actor.grantId) : undefined
|
|
57
|
+
if (actor.type !== "share" || grant === undefined) {
|
|
58
|
+
return visit
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return { ...visit, actor: { ...actor, definitionId: grant.definitionId } }
|
|
62
|
+
}
|