@loaders.gl/splats 5.0.0-alpha.1 → 5.0.0-alpha.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.
@@ -0,0 +1,133 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "version": {
6
+ "type": "number",
7
+ "const": 1
8
+ },
9
+ "type": {
10
+ "type": "string",
11
+ "const": "gsplat"
12
+ },
13
+ "count": {
14
+ "$ref": "#/definitions/__schema0"
15
+ },
16
+ "maxSh": {
17
+ "allOf": [
18
+ {
19
+ "$ref": "#/definitions/__schema0"
20
+ }
21
+ ]
22
+ },
23
+ "lodTree": {
24
+ "type": "boolean"
25
+ },
26
+ "chunkSize": {
27
+ "allOf": [
28
+ {
29
+ "$ref": "#/definitions/__schema0"
30
+ }
31
+ ]
32
+ },
33
+ "allChunkBytes": {
34
+ "allOf": [
35
+ {
36
+ "$ref": "#/definitions/__schema0"
37
+ }
38
+ ]
39
+ },
40
+ "chunks": {
41
+ "type": "array",
42
+ "items": {
43
+ "type": "object",
44
+ "properties": {
45
+ "offset": {
46
+ "$ref": "#/definitions/__schema0"
47
+ },
48
+ "bytes": {
49
+ "$ref": "#/definitions/__schema0"
50
+ },
51
+ "base": {
52
+ "allOf": [
53
+ {
54
+ "$ref": "#/definitions/__schema0"
55
+ }
56
+ ]
57
+ },
58
+ "count": {
59
+ "allOf": [
60
+ {
61
+ "$ref": "#/definitions/__schema0"
62
+ }
63
+ ]
64
+ },
65
+ "filename": {
66
+ "type": "string"
67
+ }
68
+ },
69
+ "required": [
70
+ "offset",
71
+ "bytes"
72
+ ],
73
+ "additionalProperties": {}
74
+ }
75
+ },
76
+ "splatEncoding": {
77
+ "type": "object",
78
+ "properties": {
79
+ "rgbMin": {
80
+ "type": "number"
81
+ },
82
+ "rgbMax": {
83
+ "type": "number"
84
+ },
85
+ "lnScaleMin": {
86
+ "type": "number"
87
+ },
88
+ "lnScaleMax": {
89
+ "type": "number"
90
+ },
91
+ "sh1Max": {
92
+ "type": "number"
93
+ },
94
+ "sh2Max": {
95
+ "type": "number"
96
+ },
97
+ "sh3Max": {
98
+ "type": "number"
99
+ },
100
+ "lodOpacity": {
101
+ "type": "boolean"
102
+ }
103
+ },
104
+ "additionalProperties": {}
105
+ },
106
+ "shCodeCount": {
107
+ "allOf": [
108
+ {
109
+ "$ref": "#/definitions/__schema0"
110
+ }
111
+ ]
112
+ },
113
+ "comment": {
114
+ "type": "string"
115
+ }
116
+ },
117
+ "required": [
118
+ "version",
119
+ "type",
120
+ "count",
121
+ "chunks"
122
+ ],
123
+ "additionalProperties": {},
124
+ "definitions": {
125
+ "__schema0": {
126
+ "type": "integer",
127
+ "minimum": 0,
128
+ "maximum": 9007199254740991
129
+ }
130
+ },
131
+ "$id": "https://unpkg.com/@loaders.gl/splats/rad-metadata.schema.json",
132
+ "title": "loaders.gl Spark RAD metadata"
133
+ }
@@ -10,7 +10,7 @@ const DEFAULT_RAD_HEADER_BYTE_LENGTHS = [64 * 1024, 256 * 1024, 1024 * 1024];
10
10
  const DEFAULT_RAD_MAX_CONCURRENT_CHUNK_REQUESTS = 4;
11
11
  // __VERSION__ is injected by babel-plugin-version-inline
12
12
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
13
- const VERSION = typeof "5.0.0-alpha.1" !== 'undefined' ? "5.0.0-alpha.1" : 'latest';
13
+ const VERSION = typeof "5.0.0-alpha.3" !== 'undefined' ? "5.0.0-alpha.3" : 'latest';
14
14
  /** Source factory for Spark `.rad` paged LoD Gaussian splat containers. */
15
15
  export const RADSourceLoader = {
16
16
  dataType: null,
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // dist/rad-zod-schema.js
21
+ var rad_zod_schema_exports = {};
22
+ __export(rad_zod_schema_exports, {
23
+ RADChunkMetadataJSONSchema: () => RADChunkMetadataJSONSchema,
24
+ RADChunkPropertySchema: () => RADChunkPropertySchema,
25
+ RADChunkRangeSchema: () => RADChunkRangeSchema,
26
+ RADMetadataJSONSchema: () => RADMetadataJSONSchema,
27
+ RADSplatEncodingSchema: () => RADSplatEncodingSchema
28
+ });
29
+ module.exports = __toCommonJS(rad_zod_schema_exports);
30
+ var import_zod = require("zod");
31
+ var nonNegativeSafeIntegerSchema = import_zod.z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
32
+ var RADSplatEncodingSchema = import_zod.z.object({
33
+ rgbMin: import_zod.z.number().finite().optional(),
34
+ rgbMax: import_zod.z.number().finite().optional(),
35
+ lnScaleMin: import_zod.z.number().finite().optional(),
36
+ lnScaleMax: import_zod.z.number().finite().optional(),
37
+ sh1Max: import_zod.z.number().finite().optional(),
38
+ sh2Max: import_zod.z.number().finite().optional(),
39
+ sh3Max: import_zod.z.number().finite().optional(),
40
+ lodOpacity: import_zod.z.boolean().optional()
41
+ }).passthrough();
42
+ var RADChunkRangeSchema = import_zod.z.object({
43
+ offset: nonNegativeSafeIntegerSchema,
44
+ bytes: nonNegativeSafeIntegerSchema,
45
+ base: nonNegativeSafeIntegerSchema.optional(),
46
+ count: nonNegativeSafeIntegerSchema.optional(),
47
+ filename: import_zod.z.string().optional()
48
+ }).passthrough();
49
+ var RADMetadataJSONSchema = import_zod.z.object({
50
+ version: import_zod.z.literal(1),
51
+ type: import_zod.z.literal("gsplat"),
52
+ count: nonNegativeSafeIntegerSchema,
53
+ maxSh: nonNegativeSafeIntegerSchema.optional(),
54
+ lodTree: import_zod.z.boolean().optional(),
55
+ chunkSize: nonNegativeSafeIntegerSchema.optional(),
56
+ allChunkBytes: nonNegativeSafeIntegerSchema.optional(),
57
+ chunks: import_zod.z.array(RADChunkRangeSchema),
58
+ splatEncoding: RADSplatEncodingSchema.optional(),
59
+ shCodeCount: nonNegativeSafeIntegerSchema.optional(),
60
+ comment: import_zod.z.string().optional()
61
+ }).passthrough();
62
+ var RADChunkPropertySchema = import_zod.z.object({
63
+ offset: nonNegativeSafeIntegerSchema,
64
+ bytes: nonNegativeSafeIntegerSchema,
65
+ property: import_zod.z.string(),
66
+ encoding: import_zod.z.string(),
67
+ compression: import_zod.z.string().optional(),
68
+ min: import_zod.z.number().finite().optional(),
69
+ max: import_zod.z.number().finite().optional()
70
+ }).passthrough();
71
+ var RADChunkMetadataJSONSchema = import_zod.z.object({
72
+ version: import_zod.z.literal(1),
73
+ base: nonNegativeSafeIntegerSchema,
74
+ count: nonNegativeSafeIntegerSchema,
75
+ payloadBytes: nonNegativeSafeIntegerSchema,
76
+ maxSh: nonNegativeSafeIntegerSchema.optional(),
77
+ lodTree: import_zod.z.boolean().optional(),
78
+ splatEncoding: RADSplatEncodingSchema.optional(),
79
+ properties: import_zod.z.array(RADChunkPropertySchema)
80
+ }).passthrough();
81
+ //# sourceMappingURL=rad-zod-schema.cjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/rad-zod-schema.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;AAIA,iBAAgB;AAShB,IAAM,+BAA+B,aAAE,OAAM,EAAG,IAAG,EAAG,YAAW,EAAG,IAAI,OAAO,gBAAgB;AAGxF,IAAM,yBAAyB,aACnC,OAAO;EACN,QAAQ,aAAE,OAAM,EAAG,OAAM,EAAG,SAAQ;EACpC,QAAQ,aAAE,OAAM,EAAG,OAAM,EAAG,SAAQ;EACpC,YAAY,aAAE,OAAM,EAAG,OAAM,EAAG,SAAQ;EACxC,YAAY,aAAE,OAAM,EAAG,OAAM,EAAG,SAAQ;EACxC,QAAQ,aAAE,OAAM,EAAG,OAAM,EAAG,SAAQ;EACpC,QAAQ,aAAE,OAAM,EAAG,OAAM,EAAG,SAAQ;EACpC,QAAQ,aAAE,OAAM,EAAG,OAAM,EAAG,SAAQ;EACpC,YAAY,aAAE,QAAO,EAAG,SAAQ;CACjC,EACA,YAAW;AAGP,IAAM,sBAAsB,aAChC,OAAO;EACN,QAAQ;EACR,OAAO;EACP,MAAM,6BAA6B,SAAQ;EAC3C,OAAO,6BAA6B,SAAQ;EAC5C,UAAU,aAAE,OAAM,EAAG,SAAQ;CAC9B,EACA,YAAW;AAGP,IAAM,wBAAwB,aAClC,OAAO;EACN,SAAS,aAAE,QAAQ,CAAC;EACpB,MAAM,aAAE,QAAQ,QAAQ;EACxB,OAAO;EACP,OAAO,6BAA6B,SAAQ;EAC5C,SAAS,aAAE,QAAO,EAAG,SAAQ;EAC7B,WAAW,6BAA6B,SAAQ;EAChD,eAAe,6BAA6B,SAAQ;EACpD,QAAQ,aAAE,MAAM,mBAAmB;EACnC,eAAe,uBAAuB,SAAQ;EAC9C,aAAa,6BAA6B,SAAQ;EAClD,SAAS,aAAE,OAAM,EAAG,SAAQ;CAC7B,EACA,YAAW;AAGP,IAAM,yBAAyB,aACnC,OAAO;EACN,QAAQ;EACR,OAAO;EACP,UAAU,aAAE,OAAM;EAClB,UAAU,aAAE,OAAM;EAClB,aAAa,aAAE,OAAM,EAAG,SAAQ;EAChC,KAAK,aAAE,OAAM,EAAG,OAAM,EAAG,SAAQ;EACjC,KAAK,aAAE,OAAM,EAAG,OAAM,EAAG,SAAQ;CAClC,EACA,YAAW;AAGP,IAAM,6BAA6B,aACvC,OAAO;EACN,SAAS,aAAE,QAAQ,CAAC;EACpB,MAAM;EACN,OAAO;EACP,cAAc;EACd,OAAO,6BAA6B,SAAQ;EAC5C,SAAS,aAAE,QAAO,EAAG,SAAQ;EAC7B,eAAe,uBAAuB,SAAQ;EAC9C,YAAY,aAAE,MAAM,sBAAsB;CAC3C,EACA,YAAW;",
5
+ "names": []
6
+ }
@@ -0,0 +1,88 @@
1
+ import { z } from 'zod';
2
+ /** Zod schema for Spark RAD splat quantization and shader decode ranges. */
3
+ export declare const RADSplatEncodingSchema: z.ZodObject<{
4
+ rgbMin: z.ZodOptional<z.ZodNumber>;
5
+ rgbMax: z.ZodOptional<z.ZodNumber>;
6
+ lnScaleMin: z.ZodOptional<z.ZodNumber>;
7
+ lnScaleMax: z.ZodOptional<z.ZodNumber>;
8
+ sh1Max: z.ZodOptional<z.ZodNumber>;
9
+ sh2Max: z.ZodOptional<z.ZodNumber>;
10
+ sh3Max: z.ZodOptional<z.ZodNumber>;
11
+ lodOpacity: z.ZodOptional<z.ZodBoolean>;
12
+ }, z.core.$loose>;
13
+ /** Zod schema for one chunk-table entry in top-level RAD metadata. */
14
+ export declare const RADChunkRangeSchema: z.ZodObject<{
15
+ offset: z.ZodNumber;
16
+ bytes: z.ZodNumber;
17
+ base: z.ZodOptional<z.ZodNumber>;
18
+ count: z.ZodOptional<z.ZodNumber>;
19
+ filename: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$loose>;
21
+ /** Zod schema for raw JSON metadata stored in a Spark RAD header. */
22
+ export declare const RADMetadataJSONSchema: z.ZodObject<{
23
+ version: z.ZodLiteral<1>;
24
+ type: z.ZodLiteral<"gsplat">;
25
+ count: z.ZodNumber;
26
+ maxSh: z.ZodOptional<z.ZodNumber>;
27
+ lodTree: z.ZodOptional<z.ZodBoolean>;
28
+ chunkSize: z.ZodOptional<z.ZodNumber>;
29
+ allChunkBytes: z.ZodOptional<z.ZodNumber>;
30
+ chunks: z.ZodArray<z.ZodObject<{
31
+ offset: z.ZodNumber;
32
+ bytes: z.ZodNumber;
33
+ base: z.ZodOptional<z.ZodNumber>;
34
+ count: z.ZodOptional<z.ZodNumber>;
35
+ filename: z.ZodOptional<z.ZodString>;
36
+ }, z.core.$loose>>;
37
+ splatEncoding: z.ZodOptional<z.ZodObject<{
38
+ rgbMin: z.ZodOptional<z.ZodNumber>;
39
+ rgbMax: z.ZodOptional<z.ZodNumber>;
40
+ lnScaleMin: z.ZodOptional<z.ZodNumber>;
41
+ lnScaleMax: z.ZodOptional<z.ZodNumber>;
42
+ sh1Max: z.ZodOptional<z.ZodNumber>;
43
+ sh2Max: z.ZodOptional<z.ZodNumber>;
44
+ sh3Max: z.ZodOptional<z.ZodNumber>;
45
+ lodOpacity: z.ZodOptional<z.ZodBoolean>;
46
+ }, z.core.$loose>>;
47
+ shCodeCount: z.ZodOptional<z.ZodNumber>;
48
+ comment: z.ZodOptional<z.ZodString>;
49
+ }, z.core.$loose>;
50
+ /** Zod schema for one property-table entry in RADC metadata. */
51
+ export declare const RADChunkPropertySchema: z.ZodObject<{
52
+ offset: z.ZodNumber;
53
+ bytes: z.ZodNumber;
54
+ property: z.ZodString;
55
+ encoding: z.ZodString;
56
+ compression: z.ZodOptional<z.ZodString>;
57
+ min: z.ZodOptional<z.ZodNumber>;
58
+ max: z.ZodOptional<z.ZodNumber>;
59
+ }, z.core.$loose>;
60
+ /** Zod schema for raw JSON metadata stored in a Spark RADC chunk header. */
61
+ export declare const RADChunkMetadataJSONSchema: z.ZodObject<{
62
+ version: z.ZodLiteral<1>;
63
+ base: z.ZodNumber;
64
+ count: z.ZodNumber;
65
+ payloadBytes: z.ZodNumber;
66
+ maxSh: z.ZodOptional<z.ZodNumber>;
67
+ lodTree: z.ZodOptional<z.ZodBoolean>;
68
+ splatEncoding: z.ZodOptional<z.ZodObject<{
69
+ rgbMin: z.ZodOptional<z.ZodNumber>;
70
+ rgbMax: z.ZodOptional<z.ZodNumber>;
71
+ lnScaleMin: z.ZodOptional<z.ZodNumber>;
72
+ lnScaleMax: z.ZodOptional<z.ZodNumber>;
73
+ sh1Max: z.ZodOptional<z.ZodNumber>;
74
+ sh2Max: z.ZodOptional<z.ZodNumber>;
75
+ sh3Max: z.ZodOptional<z.ZodNumber>;
76
+ lodOpacity: z.ZodOptional<z.ZodBoolean>;
77
+ }, z.core.$loose>>;
78
+ properties: z.ZodArray<z.ZodObject<{
79
+ offset: z.ZodNumber;
80
+ bytes: z.ZodNumber;
81
+ property: z.ZodString;
82
+ encoding: z.ZodString;
83
+ compression: z.ZodOptional<z.ZodString>;
84
+ min: z.ZodOptional<z.ZodNumber>;
85
+ max: z.ZodOptional<z.ZodNumber>;
86
+ }, z.core.$loose>>;
87
+ }, z.core.$loose>;
88
+ //# sourceMappingURL=rad-zod-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rad-zod-schema.d.ts","sourceRoot":"","sources":["../src/rad-zod-schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAWtB,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB;;;;;;;;;iBAWmB,CAAC;AAEvD,sEAAsE;AACtE,eAAO,MAAM,mBAAmB;;;;;;iBAQmB,CAAC;AAEpD,qEAAqE;AACrE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAcmB,CAAC;AAEtD,gEAAgE;AAChE,eAAO,MAAM,sBAAsB;;;;;;;;iBAUmB,CAAC;AAEvD,4EAA4E;AAC5E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;iBAWmB,CAAC"}
@@ -0,0 +1,70 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { z } from 'zod';
5
+ const nonNegativeSafeIntegerSchema = z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
6
+ /** Zod schema for Spark RAD splat quantization and shader decode ranges. */
7
+ export const RADSplatEncodingSchema = z
8
+ .object({
9
+ rgbMin: z.number().finite().optional(),
10
+ rgbMax: z.number().finite().optional(),
11
+ lnScaleMin: z.number().finite().optional(),
12
+ lnScaleMax: z.number().finite().optional(),
13
+ sh1Max: z.number().finite().optional(),
14
+ sh2Max: z.number().finite().optional(),
15
+ sh3Max: z.number().finite().optional(),
16
+ lodOpacity: z.boolean().optional()
17
+ })
18
+ .passthrough();
19
+ /** Zod schema for one chunk-table entry in top-level RAD metadata. */
20
+ export const RADChunkRangeSchema = z
21
+ .object({
22
+ offset: nonNegativeSafeIntegerSchema,
23
+ bytes: nonNegativeSafeIntegerSchema,
24
+ base: nonNegativeSafeIntegerSchema.optional(),
25
+ count: nonNegativeSafeIntegerSchema.optional(),
26
+ filename: z.string().optional()
27
+ })
28
+ .passthrough();
29
+ /** Zod schema for raw JSON metadata stored in a Spark RAD header. */
30
+ export const RADMetadataJSONSchema = z
31
+ .object({
32
+ version: z.literal(1),
33
+ type: z.literal('gsplat'),
34
+ count: nonNegativeSafeIntegerSchema,
35
+ maxSh: nonNegativeSafeIntegerSchema.optional(),
36
+ lodTree: z.boolean().optional(),
37
+ chunkSize: nonNegativeSafeIntegerSchema.optional(),
38
+ allChunkBytes: nonNegativeSafeIntegerSchema.optional(),
39
+ chunks: z.array(RADChunkRangeSchema),
40
+ splatEncoding: RADSplatEncodingSchema.optional(),
41
+ shCodeCount: nonNegativeSafeIntegerSchema.optional(),
42
+ comment: z.string().optional()
43
+ })
44
+ .passthrough();
45
+ /** Zod schema for one property-table entry in RADC metadata. */
46
+ export const RADChunkPropertySchema = z
47
+ .object({
48
+ offset: nonNegativeSafeIntegerSchema,
49
+ bytes: nonNegativeSafeIntegerSchema,
50
+ property: z.string(),
51
+ encoding: z.string(),
52
+ compression: z.string().optional(),
53
+ min: z.number().finite().optional(),
54
+ max: z.number().finite().optional()
55
+ })
56
+ .passthrough();
57
+ /** Zod schema for raw JSON metadata stored in a Spark RADC chunk header. */
58
+ export const RADChunkMetadataJSONSchema = z
59
+ .object({
60
+ version: z.literal(1),
61
+ base: nonNegativeSafeIntegerSchema,
62
+ count: nonNegativeSafeIntegerSchema,
63
+ payloadBytes: nonNegativeSafeIntegerSchema,
64
+ maxSh: nonNegativeSafeIntegerSchema.optional(),
65
+ lodTree: z.boolean().optional(),
66
+ splatEncoding: RADSplatEncodingSchema.optional(),
67
+ properties: z.array(RADChunkPropertySchema)
68
+ })
69
+ .passthrough();
70
+ //# sourceMappingURL=rad-zod-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rad-zod-schema.js","sourceRoot":"","sources":["../src/rad-zod-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "version": {
6
+ "type": "number",
7
+ "const": 1
8
+ },
9
+ "base": {
10
+ "$ref": "#/definitions/__schema0"
11
+ },
12
+ "count": {
13
+ "$ref": "#/definitions/__schema0"
14
+ },
15
+ "payloadBytes": {
16
+ "$ref": "#/definitions/__schema0"
17
+ },
18
+ "maxSh": {
19
+ "allOf": [
20
+ {
21
+ "$ref": "#/definitions/__schema0"
22
+ }
23
+ ]
24
+ },
25
+ "lodTree": {
26
+ "type": "boolean"
27
+ },
28
+ "splatEncoding": {
29
+ "type": "object",
30
+ "properties": {
31
+ "rgbMin": {
32
+ "type": "number"
33
+ },
34
+ "rgbMax": {
35
+ "type": "number"
36
+ },
37
+ "lnScaleMin": {
38
+ "type": "number"
39
+ },
40
+ "lnScaleMax": {
41
+ "type": "number"
42
+ },
43
+ "sh1Max": {
44
+ "type": "number"
45
+ },
46
+ "sh2Max": {
47
+ "type": "number"
48
+ },
49
+ "sh3Max": {
50
+ "type": "number"
51
+ },
52
+ "lodOpacity": {
53
+ "type": "boolean"
54
+ }
55
+ },
56
+ "additionalProperties": {}
57
+ },
58
+ "properties": {
59
+ "type": "array",
60
+ "items": {
61
+ "type": "object",
62
+ "properties": {
63
+ "offset": {
64
+ "$ref": "#/definitions/__schema0"
65
+ },
66
+ "bytes": {
67
+ "$ref": "#/definitions/__schema0"
68
+ },
69
+ "property": {
70
+ "type": "string"
71
+ },
72
+ "encoding": {
73
+ "type": "string"
74
+ },
75
+ "compression": {
76
+ "type": "string"
77
+ },
78
+ "min": {
79
+ "type": "number"
80
+ },
81
+ "max": {
82
+ "type": "number"
83
+ }
84
+ },
85
+ "required": [
86
+ "offset",
87
+ "bytes",
88
+ "property",
89
+ "encoding"
90
+ ],
91
+ "additionalProperties": {}
92
+ }
93
+ }
94
+ },
95
+ "required": [
96
+ "version",
97
+ "base",
98
+ "count",
99
+ "payloadBytes",
100
+ "properties"
101
+ ],
102
+ "additionalProperties": {},
103
+ "definitions": {
104
+ "__schema0": {
105
+ "type": "integer",
106
+ "minimum": 0,
107
+ "maximum": 9007199254740991
108
+ }
109
+ },
110
+ "$id": "https://unpkg.com/@loaders.gl/splats/radc-metadata.schema.json",
111
+ "title": "loaders.gl Spark RADC chunk metadata"
112
+ }
@@ -4,7 +4,7 @@
4
4
  import { SPLATFormat } from "./splats-format.js";
5
5
  // __VERSION__ is injected by babel-plugin-version-inline
6
6
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
7
- const VERSION = typeof "5.0.0-alpha.1" !== 'undefined' ? "5.0.0-alpha.1" : 'latest';
7
+ const VERSION = typeof "5.0.0-alpha.3" !== 'undefined' ? "5.0.0-alpha.3" : 'latest';
8
8
  /** Preloads the parser-bearing SPLAT loader implementation. */
9
9
  async function preload() {
10
10
  const { SPLATLoaderWithParser } = await import("./splat-loader.js");
@@ -4,7 +4,7 @@
4
4
  import { SPZFormat } from "./splats-format.js";
5
5
  // __VERSION__ is injected by babel-plugin-version-inline
6
6
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
7
- const VERSION = typeof "5.0.0-alpha.1" !== 'undefined' ? "5.0.0-alpha.1" : 'latest';
7
+ const VERSION = typeof "5.0.0-alpha.3" !== 'undefined' ? "5.0.0-alpha.3" : 'latest';
8
8
  /** Preloads the parser-bearing SPZ loader implementation. */
9
9
  async function preload() {
10
10
  const { SPZLoaderWithParser } = await import("./spz-loader.js");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/splats",
3
- "version": "5.0.0-alpha.1",
3
+ "version": "5.0.0-alpha.3",
4
4
  "description": "Framework-independent loaders for Gaussian splat formats",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -49,6 +49,11 @@
49
49
  "types": "./dist/rad-source-loader.d.ts",
50
50
  "import": "./dist/rad-source-loader.js"
51
51
  },
52
+ "./rad-zod-schema": {
53
+ "types": "./dist/rad-zod-schema.d.ts",
54
+ "import": "./dist/rad-zod-schema.js",
55
+ "require": "./dist/rad-zod-schema.cjs"
56
+ },
52
57
  "./unbundled": {
53
58
  "types": "./dist/unbundled.d.ts",
54
59
  "import": "./dist/unbundled.js"
@@ -56,7 +61,9 @@
56
61
  "./bundled": {
57
62
  "types": "./dist/bundled.d.ts",
58
63
  "import": "./dist/bundled.js"
59
- }
64
+ },
65
+ "./rad-metadata.schema.json": "./dist/rad-metadata.schema.json",
66
+ "./radc-metadata.schema.json": "./dist/radc-metadata.schema.json"
60
67
  },
61
68
  "sideEffects": false,
62
69
  "files": [
@@ -65,15 +72,17 @@
65
72
  "README.md"
66
73
  ],
67
74
  "scripts": {
68
- "pre-build": "npm run build-bundle && npm run build-bundle-dev",
75
+ "pre-build": "npm run generate-json-schema && npm run build-bundle && npm run build-bundle-dev",
76
+ "generate-json-schema": "node ../../scripts/generate-json-schema.mjs --schema ./dist/rad-zod-schema.js --export RADMetadataJSONSchema --output ./dist/rad-metadata.schema.json --id https://unpkg.com/@loaders.gl/splats/rad-metadata.schema.json --title 'loaders.gl Spark RAD metadata' && node ../../scripts/generate-json-schema.mjs --schema ./dist/rad-zod-schema.js --export RADChunkMetadataJSONSchema --output ./dist/radc-metadata.schema.json --id https://unpkg.com/@loaders.gl/splats/radc-metadata.schema.json --title 'loaders.gl Spark RADC chunk metadata'",
69
77
  "build-bundle": "ocular-bundle ./bundle.ts --output=dist/dist.min.js",
70
78
  "build-bundle-dev": "ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js"
71
79
  },
72
80
  "dependencies": {
73
- "@loaders.gl/compression": "5.0.0-alpha.1",
74
- "@loaders.gl/loader-utils": "5.0.0-alpha.1",
75
- "@loaders.gl/schema": "5.0.0-alpha.1",
76
- "apache-arrow": ">= 17.0.0"
81
+ "@loaders.gl/compression": "5.0.0-alpha.3",
82
+ "@loaders.gl/loader-utils": "5.0.0-alpha.3",
83
+ "@loaders.gl/schema": "5.0.0-alpha.3",
84
+ "apache-arrow": ">= 17.0.0",
85
+ "zod": "^4.1.12"
77
86
  },
78
87
  "devDependencies": {
79
88
  "zstd-codec": "^0.1.0"
@@ -81,5 +90,5 @@
81
90
  "peerDependencies": {
82
91
  "@loaders.gl/core": "~5.0.0-alpha.0"
83
92
  },
84
- "gitHead": "77a55028e8204e09df1258f10cb61ed35353b258"
93
+ "gitHead": "6e6f532b04a2798191ee2d9a932ca73b7c7f3c8d"
85
94
  }
package/src/index.ts CHANGED
@@ -5,12 +5,14 @@
5
5
  export type {GaussianSplats, SplatsLoaderOptions} from './types';
6
6
  export type {
7
7
  RADChunkMetadata,
8
+ RADChunkMetadataJSON,
8
9
  RADChunkProperty,
9
10
  RADChunkPropertyCompression,
10
11
  RADChunkPropertyEncoding,
11
12
  RADChunkPropertyName,
12
13
  RADChunkRange,
13
14
  RADMetadata,
15
+ RADMetadataJSON,
14
16
  RADSplatEncoding
15
17
  } from './lib/parse-rad';
16
18
  export {SPLATFormat, KSPLATFormat, SPZFormat, RADFormat} from './splats-format';
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import {DeflateCompression} from '@loaders.gl/compression';
5
+ import {DeflateDecompressor} from '@loaders.gl/compression/deflate-decompressor';
6
6
  import type {MeshArrowTable} from '@loaders.gl/schema';
7
7
  import type {GaussianSplats, SplatsLoaderOptions} from '../types';
8
8
  import {
@@ -15,8 +15,8 @@ import {
15
15
  import {makeGaussianSplatsArrowTable} from './splats-arrow-table';
16
16
  import {decodeFloat16, normalizeQuaternion, SH_C0} from './splat-utils';
17
17
 
18
- const RAD_PROPERTY_DEFLATE = new DeflateCompression();
19
- const RAD_PROPERTY_RAW_DEFLATE = new DeflateCompression({raw: true});
18
+ const RAD_PROPERTY_DEFLATE = new DeflateDecompressor({useNative: false});
19
+ const RAD_PROPERTY_RAW_DEFLATE = new DeflateDecompressor({raw: true, useNative: false});
20
20
 
21
21
  /** Options for decoding one Spark RADC chunk payload. */
22
22
  export type RADChunkDecodeOptions = SplatsLoaderOptions & {