@powerhousedao/shared 6.0.0-dev.105 → 6.0.0-dev.106

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/analytics/index.d.ts +42 -4
  2. package/dist/analytics/index.d.ts.map +1 -1
  3. package/dist/analytics/index.js +307 -4
  4. package/dist/analytics/index.js.map +1 -1
  5. package/dist/clis/index.d.mts +1271 -0
  6. package/dist/clis/index.d.mts.map +1 -0
  7. package/dist/clis/index.mjs +6801 -0
  8. package/dist/clis/index.mjs.map +1 -0
  9. package/dist/connect/index.d.ts +866 -1
  10. package/dist/connect/index.d.ts.map +1 -1
  11. package/dist/connect/index.js +254 -1
  12. package/dist/connect/index.js.map +1 -1
  13. package/dist/constants.d.ts +8 -0
  14. package/dist/constants.d.ts.map +1 -0
  15. package/dist/constants.js +41 -0
  16. package/dist/constants.js.map +1 -0
  17. package/dist/document-drive/index.d.ts +546 -0
  18. package/dist/document-drive/index.d.ts.map +1 -0
  19. package/dist/document-drive/index.js +956 -0
  20. package/dist/document-drive/index.js.map +1 -0
  21. package/dist/document-model/index.d.ts +3 -5
  22. package/dist/document-model/index.js +3408 -2
  23. package/dist/document-model/index.js.map +1 -1
  24. package/dist/index-dg_xL7sp.d.ts +567 -0
  25. package/dist/index-dg_xL7sp.d.ts.map +1 -0
  26. package/dist/processors/index.d.ts +2 -5
  27. package/dist/processors/index.js +116 -3
  28. package/dist/processors/index.js.map +1 -1
  29. package/dist/registry/index.d.ts +46 -0
  30. package/dist/registry/index.d.ts.map +1 -0
  31. package/dist/registry/index.js +0 -0
  32. package/dist/types-DWXYsIF1.d.ts +158 -0
  33. package/dist/types-DWXYsIF1.d.ts.map +1 -0
  34. package/dist/types-faUXKACL.d.ts +2153 -0
  35. package/dist/types-faUXKACL.d.ts.map +1 -0
  36. package/package.json +44 -4
  37. package/dist/analytics/analytics-path.d.ts +0 -36
  38. package/dist/analytics/analytics-path.d.ts.map +0 -1
  39. package/dist/analytics/analytics-path.js +0 -170
  40. package/dist/analytics/analytics-path.js.map +0 -1
  41. package/dist/analytics/analytics-period.d.ts +0 -40
  42. package/dist/analytics/analytics-period.d.ts.map +0 -1
  43. package/dist/analytics/analytics-period.js +0 -204
  44. package/dist/analytics/analytics-period.js.map +0 -1
  45. package/dist/analytics/constants.d.ts +0 -35
  46. package/dist/analytics/constants.d.ts.map +0 -1
  47. package/dist/analytics/constants.js +0 -40
  48. package/dist/analytics/constants.js.map +0 -1
  49. package/dist/analytics/types.d.ts +0 -85
  50. package/dist/analytics/types.d.ts.map +0 -1
  51. package/dist/analytics/types.js +0 -2
  52. package/dist/analytics/types.js.map +0 -1
  53. package/dist/connect/env-config.d.ts +0 -862
  54. package/dist/connect/env-config.d.ts.map +0 -1
  55. package/dist/connect/env-config.js +0 -525
  56. package/dist/connect/env-config.js.map +0 -1
  57. package/dist/document-model/core/actions.d.ts +0 -62
  58. package/dist/document-model/core/actions.d.ts.map +0 -1
  59. package/dist/document-model/core/actions.js +0 -2
  60. package/dist/document-model/core/actions.js.map +0 -1
  61. package/dist/document-model/core/constants.d.ts +0 -6
  62. package/dist/document-model/core/constants.d.ts.map +0 -1
  63. package/dist/document-model/core/constants.js +0 -8
  64. package/dist/document-model/core/constants.js.map +0 -1
  65. package/dist/document-model/core/documents.d.ts +0 -102
  66. package/dist/document-model/core/documents.d.ts.map +0 -1
  67. package/dist/document-model/core/documents.js +0 -2
  68. package/dist/document-model/core/documents.js.map +0 -1
  69. package/dist/document-model/core/operations.d.ts +0 -74
  70. package/dist/document-model/core/operations.d.ts.map +0 -1
  71. package/dist/document-model/core/operations.js +0 -2
  72. package/dist/document-model/core/operations.js.map +0 -1
  73. package/dist/document-model/core/ph-types.d.ts +0 -7
  74. package/dist/document-model/core/ph-types.d.ts.map +0 -1
  75. package/dist/document-model/core/ph-types.js +0 -2
  76. package/dist/document-model/core/ph-types.js.map +0 -1
  77. package/dist/document-model/core/signatures.d.ts +0 -52
  78. package/dist/document-model/core/signatures.d.ts.map +0 -1
  79. package/dist/document-model/core/signatures.js +0 -2
  80. package/dist/document-model/core/signatures.js.map +0 -1
  81. package/dist/document-model/core/state.d.ts +0 -38
  82. package/dist/document-model/core/state.d.ts.map +0 -1
  83. package/dist/document-model/core/state.js +0 -2
  84. package/dist/document-model/core/state.js.map +0 -1
  85. package/dist/document-model/core/types.d.ts +0 -533
  86. package/dist/document-model/core/types.d.ts.map +0 -1
  87. package/dist/document-model/core/types.js +0 -2
  88. package/dist/document-model/core/types.js.map +0 -1
  89. package/dist/document-model/core/upgrades.d.ts +0 -24
  90. package/dist/document-model/core/upgrades.d.ts.map +0 -1
  91. package/dist/document-model/core/upgrades.js +0 -2
  92. package/dist/document-model/core/upgrades.js.map +0 -1
  93. package/dist/document-model/index.d.ts.map +0 -1
  94. package/dist/document-model/types.d.ts +0 -97
  95. package/dist/document-model/types.d.ts.map +0 -1
  96. package/dist/document-model/types.js +0 -2
  97. package/dist/document-model/types.js.map +0 -1
  98. package/dist/processors/constants.d.ts +0 -4
  99. package/dist/processors/constants.d.ts.map +0 -1
  100. package/dist/processors/constants.js +0 -4
  101. package/dist/processors/constants.js.map +0 -1
  102. package/dist/processors/drive-analytics/document-processor.d.ts +0 -10
  103. package/dist/processors/drive-analytics/document-processor.d.ts.map +0 -1
  104. package/dist/processors/drive-analytics/document-processor.js +0 -43
  105. package/dist/processors/drive-analytics/document-processor.js.map +0 -1
  106. package/dist/processors/drive-analytics/drive-processor.d.ts +0 -10
  107. package/dist/processors/drive-analytics/drive-processor.d.ts.map +0 -1
  108. package/dist/processors/drive-analytics/drive-processor.js +0 -85
  109. package/dist/processors/drive-analytics/drive-processor.js.map +0 -1
  110. package/dist/processors/drive-analytics/index.d.ts +0 -10
  111. package/dist/processors/drive-analytics/index.d.ts.map +0 -1
  112. package/dist/processors/drive-analytics/index.js +0 -28
  113. package/dist/processors/drive-analytics/index.js.map +0 -1
  114. package/dist/processors/drive-analytics/types.d.ts +0 -3
  115. package/dist/processors/drive-analytics/types.d.ts.map +0 -1
  116. package/dist/processors/drive-analytics/types.js +0 -2
  117. package/dist/processors/drive-analytics/types.js.map +0 -1
  118. package/dist/processors/index.d.ts.map +0 -1
  119. package/dist/processors/relational/types.d.ts +0 -72
  120. package/dist/processors/relational/types.d.ts.map +0 -1
  121. package/dist/processors/relational/types.js +0 -45
  122. package/dist/processors/relational/types.js.map +0 -1
  123. package/dist/processors/relational/utils.d.ts +0 -29
  124. package/dist/processors/relational/utils.d.ts.map +0 -1
  125. package/dist/processors/relational/utils.js +0 -67
  126. package/dist/processors/relational/utils.js.map +0 -1
  127. package/dist/processors/types.d.ts +0 -90
  128. package/dist/processors/types.d.ts.map +0 -1
  129. package/dist/processors/types.js +0 -2
  130. package/dist/processors/types.js.map +0 -1
  131. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,4 +1,117 @@
1
- export * from "./constants.js";
2
- export * from "./relational/types.js";
3
- export * from "./relational/utils.js";
1
+ import fnv1a from "@sindresorhus/fnv1a";
2
+ //#region processors/constants.ts
3
+ const PROCESSOR_APPS = ["connect", "switchboard"];
4
+ const DEFAULT_RELATIONAL_PROCESSOR_DB_NAME = "relational-db";
5
+ const DEFAULT_ANALYTICS_PROCESSOR_DB_NAME = "analytics-db";
6
+ //#endregion
7
+ //#region processors/relational/utils.ts
8
+ const SUPPORTED_SIZES = [
9
+ 32,
10
+ 64,
11
+ 128,
12
+ 256,
13
+ 512,
14
+ 1024
15
+ ];
16
+ const LOG2_26 = Math.log2(26);
17
+ /**
18
+ * Hashes a string to a lowercase base-26 string.
19
+ * @param str The string to hash.
20
+ * @param length The length of the hash. Defaults to 10.
21
+ * @param algorithm The hashing algorithm to use. Defaults to "fnv1a".
22
+ * @returns The hashed string.
23
+ */
24
+ function hashNamespace(str, length = 10) {
25
+ const requiredBits = Math.ceil(length * LOG2_26);
26
+ return toBase26(fnv1a(str, { size: SUPPORTED_SIZES.find((size) => size && size >= requiredBits) ?? 1024 }), length);
27
+ }
28
+ function toBase26(num, length = 10) {
29
+ const alphabet = "abcdefghijklmnopqrstuvwxyz";
30
+ let out = "";
31
+ while (num > 0n && out.length < length) {
32
+ out = alphabet[Number(num % 26n)] + out;
33
+ num /= 26n;
34
+ }
35
+ return out.padStart(length, "a");
36
+ }
37
+ /**
38
+ * Creates a RelationalDb instance with namespace support.
39
+ * @param baseDb The base RelationalDb instance to enhance.
40
+ * @param baseOptions The default options for namespace creation. Hashes namespace by default.
41
+ * @returns The enhanced RelationalDb instance.
42
+ */
43
+ function createRelationalDb(baseDb, baseOptions) {
44
+ const relationalDb = baseDb;
45
+ relationalDb.createNamespace = (namespace, options) => createNamespacedDb(baseDb, namespace, options ?? baseOptions);
46
+ relationalDb.queryNamespace = (namespace, options) => createNamespacedQueryBuilder(baseDb, namespace, options ?? baseOptions);
47
+ return relationalDb;
48
+ }
49
+ async function createNamespacedDb(db, namespace, options) {
50
+ const hashValue = options?.hashNamespace ?? true ? hashNamespace(namespace) : namespace;
51
+ await db.schema.createSchema(hashValue).ifNotExists().execute();
52
+ return db.withSchema(hashValue);
53
+ }
54
+ function createNamespacedQueryBuilder(db, namespace, options) {
55
+ const hashValue = options?.hashNamespace ?? true ? hashNamespace(namespace) : namespace;
56
+ return relationalDbToQueryBuilder(db.withSchema(hashValue));
57
+ }
58
+ /**
59
+ * Returns a query builder for a RelationalDb instance.
60
+ * @param query The RelationalDb instance to convert.
61
+ * @returns The IRelationalQueryBuilder instance.
62
+ */
63
+ function relationalDbToQueryBuilder(query) {
64
+ return {
65
+ selectFrom: query.selectFrom.bind(query),
66
+ selectNoFrom: query.selectNoFrom.bind(query),
67
+ with: query.with.bind(query),
68
+ withRecursive: query.withRecursive.bind(query),
69
+ withSchema: (schema) => relationalDbToQueryBuilder(query.withSchema(schema))
70
+ };
71
+ }
72
+ //#endregion
73
+ //#region processors/relational/types.ts
74
+ const IS_RELATIONAL_DB_PROCESSOR = Symbol.for("ph.IS_RELATIONAL_DB_PROCESSOR");
75
+ /**
76
+ * Base class for relational db processors that require a relational database storage.
77
+ * This class abstracts database initialization, migration management, and resource cleanup,
78
+ * allowing derived classes to focus on business logic.
79
+ */
80
+ var RelationalDbProcessor = class {
81
+ constructor(_namespace, _filter, relationalDb) {
82
+ this._namespace = _namespace;
83
+ this._filter = _filter;
84
+ this.relationalDb = relationalDb;
85
+ }
86
+ static [IS_RELATIONAL_DB_PROCESSOR] = true;
87
+ /**
88
+ * Returns the namespace for a given drive id.
89
+ * This method can be overridden by derived classes to provide a custom namespace.
90
+ */
91
+ static getNamespace(driveId) {
92
+ return `${this.name}_${driveId.replaceAll("-", "_")}`;
93
+ }
94
+ static query(driveId, db) {
95
+ return db.queryNamespace(this.getNamespace(driveId));
96
+ }
97
+ /**
98
+ * Returns the filter for the processor.
99
+ * This method can be overridden by derived classes to provide a custom filter.
100
+ */
101
+ get filter() {
102
+ return this._filter;
103
+ }
104
+ /**
105
+ * Returns the namespace used by the processor.
106
+ */
107
+ get namespace() {
108
+ return this._namespace;
109
+ }
110
+ get query() {
111
+ return relationalDbToQueryBuilder(this.relationalDb);
112
+ }
113
+ };
114
+ //#endregion
115
+ export { DEFAULT_ANALYTICS_PROCESSOR_DB_NAME, DEFAULT_RELATIONAL_PROCESSOR_DB_NAME, PROCESSOR_APPS, RelationalDbProcessor, createNamespacedDb, createNamespacedQueryBuilder, createRelationalDb, hashNamespace, relationalDbToQueryBuilder };
116
+
4
117
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../processors/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../processors/constants.ts","../../processors/relational/utils.ts","../../processors/relational/types.ts"],"sourcesContent":["export const PROCESSOR_APPS = [\"connect\", \"switchboard\"] as const;\nexport const DEFAULT_RELATIONAL_PROCESSOR_DB_NAME = \"relational-db\";\nexport const DEFAULT_ANALYTICS_PROCESSOR_DB_NAME = \"analytics-db\";\n","import type { Options } from \"@sindresorhus/fnv1a\";\nimport fnv1a from \"@sindresorhus/fnv1a\";\nimport type {\n IBaseRelationalDb,\n IRelationalDb,\n IRelationalQueryBuilder,\n} from \"./types.js\";\n\nconst SUPPORTED_SIZES: Options[\"size\"][] = [32, 64, 128, 256, 512, 1024];\nconst LOG2_26 = Math.log2(26); //\n/**\n * Hashes a string to a lowercase base-26 string.\n * @param str The string to hash.\n * @param length The length of the hash. Defaults to 10.\n * @param algorithm The hashing algorithm to use. Defaults to \"fnv1a\".\n * @returns The hashed string.\n */\nexport function hashNamespace(str: string, length = 10) {\n const requiredBits = Math.ceil(length * LOG2_26);\n const bitSize =\n SUPPORTED_SIZES.find((size) => size && size >= requiredBits) ?? 1024;\n const hash = fnv1a(str, { size: bitSize });\n return toBase26(hash, length);\n}\n\n// converts hash to lowercase letters\nfunction toBase26(num: bigint, length = 10): string {\n const alphabet = \"abcdefghijklmnopqrstuvwxyz\";\n let out = \"\";\n while (num > 0n && out.length < length) {\n out = alphabet[Number(num % 26n)] + out;\n num /= 26n;\n }\n return out.padStart(length, \"a\"); // optional padding\n}\n\n/**\n * Creates a RelationalDb instance with namespace support.\n * @param baseDb The base RelationalDb instance to enhance.\n * @param baseOptions The default options for namespace creation. Hashes namespace by default.\n * @returns The enhanced RelationalDb instance.\n */\nexport function createRelationalDb<Schema>(\n baseDb: IBaseRelationalDb<Schema>,\n baseOptions?: NamespaceOptions,\n): IRelationalDb<Schema> {\n const relationalDb = baseDb as IRelationalDb<Schema>;\n\n relationalDb.createNamespace = <NamespaceSchema>(\n namespace: string,\n options?: NamespaceOptions,\n ) =>\n createNamespacedDb<NamespaceSchema>(\n baseDb,\n namespace,\n options ?? baseOptions,\n );\n\n relationalDb.queryNamespace = <NamespaceSchema>(\n namespace: string,\n options?: NamespaceOptions,\n ) =>\n createNamespacedQueryBuilder<NamespaceSchema>(\n baseDb,\n namespace,\n options ?? baseOptions,\n );\n\n return relationalDb;\n}\n\ntype NamespaceOptions = {\n hashNamespace?: boolean;\n};\n\nexport async function createNamespacedDb<Schema>(\n db: IBaseRelationalDb<any>,\n namespace: string,\n options?: NamespaceOptions,\n): Promise<IRelationalDb<Schema>> {\n // hash the namespace to avoid too long namespaces\n const shouldHash = options?.hashNamespace ?? true;\n const hashValue = shouldHash ? hashNamespace(namespace) : namespace;\n await db.schema.createSchema(hashValue).ifNotExists().execute();\n const schemaRelationalDb = db.withSchema(hashValue);\n return schemaRelationalDb as IRelationalDb<Schema>;\n}\n\nexport function createNamespacedQueryBuilder<Schema>(\n db: IBaseRelationalDb<any>,\n namespace: string,\n options?: NamespaceOptions,\n): IRelationalQueryBuilder<Schema> {\n const shouldHash = options?.hashNamespace ?? true;\n const hashValue = shouldHash ? hashNamespace(namespace) : namespace;\n const namespacedDb = db.withSchema(hashValue) as IRelationalDb<Schema>;\n return relationalDbToQueryBuilder(namespacedDb);\n}\n\n/**\n * Returns a query builder for a RelationalDb instance.\n * @param query The RelationalDb instance to convert.\n * @returns The IRelationalQueryBuilder instance.\n */\nexport function relationalDbToQueryBuilder<TSchema>(\n query: IBaseRelationalDb<TSchema>,\n): IRelationalQueryBuilder<TSchema> {\n return {\n selectFrom: query.selectFrom.bind(query),\n selectNoFrom: query.selectNoFrom.bind(query),\n with: query.with.bind(query),\n withRecursive: query.withRecursive.bind(query),\n withSchema: (schema: string) =>\n relationalDbToQueryBuilder<TSchema>(query.withSchema(schema)),\n };\n}\n","import type { OperationWithContext } from \"@powerhousedao/shared/document-model\";\nimport type { Kysely, QueryCreator } from \"kysely\";\nimport type { IProcessor, ProcessorFilter } from \"../types.js\";\nimport { relationalDbToQueryBuilder } from \"./utils.js\";\n\nexport type IRelationalQueryMethods =\n | \"selectFrom\"\n | \"selectNoFrom\"\n | \"with\"\n | \"withRecursive\";\n\nexport type IRelationalQueryBuilder<Schema = unknown> = Pick<\n QueryCreator<Schema>,\n IRelationalQueryMethods\n> & {\n withSchema: (schema: string) => IRelationalQueryBuilder<Schema>;\n};\n\nexport type HashAlgorithms = \"fnv1a\";\nexport type IBaseRelationalDb<Schema = unknown> = Kysely<Schema>;\n\n/**\n * The standardized relational database interface for relational db processors.\n * This abstraction provides type-safe database operations while hiding the underlying\n * database framework implementation details.\n **/\nexport type IRelationalDb<Schema = unknown> = IBaseRelationalDb<Schema> & {\n createNamespace<NamespaceSchema>(\n namespace: string,\n ): Promise<IRelationalDb<ExtractProcessorSchemaOrSelf<NamespaceSchema>>>;\n queryNamespace<NamespaceSchema>(\n namespace: string,\n ): IRelationalQueryBuilder<NamespaceSchema>;\n};\n\nexport type ExtractProcessorSchemaOrSelf<TProcessor> =\n TProcessor extends RelationalDbProcessor<infer TSchema>\n ? TSchema\n : TProcessor;\n\nexport type RelationalDbProcessorClass<TSchema> =\n typeof RelationalDbProcessor<TSchema>;\n\nexport interface IRelationalDbProcessor<\n TDatabaseSchema = unknown,\n> extends IProcessor {\n namespace: string;\n query: IRelationalQueryBuilder<TDatabaseSchema>;\n filter: ProcessorFilter;\n initAndUpgrade(): Promise<void>;\n}\n\nconst IS_RELATIONAL_DB_PROCESSOR = Symbol.for(\"ph.IS_RELATIONAL_DB_PROCESSOR\");\n\n/**\n * Base class for relational db processors that require a relational database storage.\n * This class abstracts database initialization, migration management, and resource cleanup,\n * allowing derived classes to focus on business logic.\n */\nexport abstract class RelationalDbProcessor<\n TDatabaseSchema = unknown,\n> implements IRelationalDbProcessor<TDatabaseSchema> {\n constructor(\n protected _namespace: string,\n protected _filter: ProcessorFilter,\n protected relationalDb: IRelationalDb<TDatabaseSchema>,\n ) {}\n\n static [IS_RELATIONAL_DB_PROCESSOR] = true;\n\n /**\n * Returns the namespace for a given drive id.\n * This method can be overridden by derived classes to provide a custom namespace.\n */\n static getNamespace(driveId: string): string {\n return `${this.name}_${driveId.replaceAll(\"-\", \"_\")}`;\n }\n\n static query<Schema>(\n this: RelationalDbProcessorClass<Schema>,\n driveId: string,\n db: IRelationalDb<any>,\n ): IRelationalQueryBuilder<Schema> {\n return db.queryNamespace(this.getNamespace(driveId));\n }\n\n /**\n * Processes a list of operations with context.\n * Called when operations match this processor's filter.\n */\n abstract onOperations(operations: OperationWithContext[]): Promise<void>;\n\n /**\n * Returns the filter for the processor.\n * This method can be overridden by derived classes to provide a custom filter.\n */\n get filter(): ProcessorFilter {\n return this._filter;\n }\n\n /**\n * Returns the namespace used by the processor.\n */\n get namespace(): string {\n return this._namespace;\n }\n\n get query(): IRelationalQueryBuilder<TDatabaseSchema> {\n return relationalDbToQueryBuilder(this.relationalDb);\n }\n\n /**\n * Abstract method that derived classes must implement.\n * This method is meant to be called on subclasses to initialize and upgrade the database.\n */\n abstract initAndUpgrade(): Promise<void>;\n\n /**\n * Called when the processor is disconnected.\n * This method is meant to be overridden by subclasses to clean up resources.\n */\n abstract onDisconnect(): Promise<void>;\n}\n"],"mappings":";;AAAA,MAAa,iBAAiB,CAAC,WAAW,cAAc;AACxD,MAAa,uCAAuC;AACpD,MAAa,sCAAsC;;;ACMnD,MAAM,kBAAqC;CAAC;CAAI;CAAI;CAAK;CAAK;CAAK;CAAK;AACxE,MAAM,UAAU,KAAK,KAAK,GAAG;;;;;;;;AAQ7B,SAAgB,cAAc,KAAa,SAAS,IAAI;CACtD,MAAM,eAAe,KAAK,KAAK,SAAS,QAAQ;AAIhD,QAAO,SADM,MAAM,KAAK,EAAE,MADxB,gBAAgB,MAAM,SAAS,QAAQ,QAAQ,aAAa,IAAI,MACzB,CAAC,EACpB,OAAO;;AAI/B,SAAS,SAAS,KAAa,SAAS,IAAY;CAClD,MAAM,WAAW;CACjB,IAAI,MAAM;AACV,QAAO,MAAM,MAAM,IAAI,SAAS,QAAQ;AACtC,QAAM,SAAS,OAAO,MAAM,IAAI,IAAI;AACpC,SAAO;;AAET,QAAO,IAAI,SAAS,QAAQ,IAAI;;;;;;;;AASlC,SAAgB,mBACd,QACA,aACuB;CACvB,MAAM,eAAe;AAErB,cAAa,mBACX,WACA,YAEA,mBACE,QACA,WACA,WAAW,YACZ;AAEH,cAAa,kBACX,WACA,YAEA,6BACE,QACA,WACA,WAAW,YACZ;AAEH,QAAO;;AAOT,eAAsB,mBACpB,IACA,WACA,SACgC;CAGhC,MAAM,YADa,SAAS,iBAAiB,OACd,cAAc,UAAU,GAAG;AAC1D,OAAM,GAAG,OAAO,aAAa,UAAU,CAAC,aAAa,CAAC,SAAS;AAE/D,QAD2B,GAAG,WAAW,UAAU;;AAIrD,SAAgB,6BACd,IACA,WACA,SACiC;CAEjC,MAAM,YADa,SAAS,iBAAiB,OACd,cAAc,UAAU,GAAG;AAE1D,QAAO,2BADc,GAAG,WAAW,UAAU,CACE;;;;;;;AAQjD,SAAgB,2BACd,OACkC;AAClC,QAAO;EACL,YAAY,MAAM,WAAW,KAAK,MAAM;EACxC,cAAc,MAAM,aAAa,KAAK,MAAM;EAC5C,MAAM,MAAM,KAAK,KAAK,MAAM;EAC5B,eAAe,MAAM,cAAc,KAAK,MAAM;EAC9C,aAAa,WACX,2BAAoC,MAAM,WAAW,OAAO,CAAC;EAChE;;;;AC9DH,MAAM,6BAA6B,OAAO,IAAI,gCAAgC;;;;;;AAO9E,IAAsB,wBAAtB,MAEqD;CACnD,YACE,YACA,SACA,cACA;AAHU,OAAA,aAAA;AACA,OAAA,UAAA;AACA,OAAA,eAAA;;CAGZ,QAAQ,8BAA8B;;;;;CAMtC,OAAO,aAAa,SAAyB;AAC3C,SAAO,GAAG,KAAK,KAAK,GAAG,QAAQ,WAAW,KAAK,IAAI;;CAGrD,OAAO,MAEL,SACA,IACiC;AACjC,SAAO,GAAG,eAAe,KAAK,aAAa,QAAQ,CAAC;;;;;;CAatD,IAAI,SAA0B;AAC5B,SAAO,KAAK;;;;;CAMd,IAAI,YAAoB;AACtB,SAAO,KAAK;;CAGd,IAAI,QAAkD;AACpD,SAAO,2BAA2B,KAAK,aAAa"}
@@ -0,0 +1,46 @@
1
+ //#region registry/types.d.ts
2
+ interface PowerhouseManifestDocumentModel {
3
+ id: string;
4
+ name: string;
5
+ }
6
+ interface PowerhouseManifestEditor {
7
+ id: string;
8
+ name: string;
9
+ documentTypes: string[];
10
+ }
11
+ interface PowerhouseManifestApp {
12
+ id: string;
13
+ name: string;
14
+ driveEditor?: string;
15
+ }
16
+ interface PowerhouseManifest {
17
+ name: string;
18
+ description?: string;
19
+ version?: string;
20
+ category?: string;
21
+ publisher?: {
22
+ name: string;
23
+ url: string;
24
+ };
25
+ documentModels?: PowerhouseManifestDocumentModel[];
26
+ editors?: PowerhouseManifestEditor[];
27
+ apps?: PowerhouseManifestApp[];
28
+ subgraphs?: unknown[];
29
+ importScripts?: unknown[];
30
+ }
31
+ interface PackageInfo {
32
+ name: string;
33
+ path: string;
34
+ manifest: PowerhouseManifest | null;
35
+ }
36
+ type RegistryPackageStatus = "available" | "local-install" | "registry-install" | "dismissed";
37
+ type RegistryPackageSource = "available" | "local-install" | "registry-install" | "common" | "project";
38
+ type RegistryPackage = PackageInfo & {
39
+ status: RegistryPackageStatus;
40
+ documentTypes: string[];
41
+ };
42
+ type RegistryPackageMap = Record<string, RegistryPackage | undefined>;
43
+ type RegistryPackageList = RegistryPackage[];
44
+ //#endregion
45
+ export { PackageInfo, PowerhouseManifest, PowerhouseManifestApp, PowerhouseManifestDocumentModel, PowerhouseManifestEditor, RegistryPackage, RegistryPackageList, RegistryPackageMap, RegistryPackageSource, RegistryPackageStatus };
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../registry/types.ts"],"mappings":";UAAiB,+BAAA;EACf,EAAA;EACA,IAAA;AAAA;AAAA,UAGe,wBAAA;EACf,EAAA;EACA,IAAA;EACA,aAAA;AAAA;AAAA,UAGe,qBAAA;EACf,EAAA;EACA,IAAA;EACA,WAAA;AAAA;AAAA,UAGe,kBAAA;EACf,IAAA;EACA,WAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;IACE,IAAA;IACA,GAAA;EAAA;EAEF,cAAA,GAAiB,+BAAA;EACjB,OAAA,GAAU,wBAAA;EACV,IAAA,GAAO,qBAAA;EACP,SAAA;EACA,aAAA;AAAA;AAAA,UAGe,WAAA;EACf,IAAA;EACA,IAAA;EACA,QAAA,EAAU,kBAAA;AAAA;AAAA,KAGA,qBAAA;AAAA,KAMA,qBAAA;AAAA,KAOA,eAAA,GAAkB,WAAA;EAC5B,MAAA,EAAQ,qBAAA;EACR,aAAA;AAAA;AAAA,KAEU,kBAAA,GAAqB,MAAA,SAAe,eAAA;AAAA,KACpC,mBAAA,GAAsB,eAAA"}
File without changes
@@ -0,0 +1,158 @@
1
+ import { DateTime } from "luxon";
2
+
3
+ //#region analytics/constants.d.ts
4
+ declare enum AnalyticsSerializerTypes {
5
+ AnalyticsPath = 0,
6
+ AnalyticsPathSegment = 1,
7
+ AnalyticsPeriod = 2
8
+ }
9
+ declare enum AnalyticsPeriodType {
10
+ Year = 0,
11
+ Quarter = 1,
12
+ Month = 2
13
+ }
14
+ declare enum AnalyticsMetric {
15
+ Budget = 0,
16
+ Forecast = 1,
17
+ Actuals = 2,
18
+ PaymentsOnChain = 3,
19
+ PaymentsOffChainIncluded = 4,
20
+ FTEs = 5
21
+ }
22
+ declare enum CompoundOperator {
23
+ VectorAdd = 0,
24
+ VectorSubtract = 1,
25
+ ScalarMultiply = 2,
26
+ ScalarDivide = 3
27
+ }
28
+ declare enum AnalyticsGranularity {
29
+ Total = 0,
30
+ Annual = 1,
31
+ SemiAnnual = 2,
32
+ Quarterly = 3,
33
+ Monthly = 4,
34
+ Weekly = 5,
35
+ Daily = 6,
36
+ Hourly = 7
37
+ }
38
+ //#endregion
39
+ //#region analytics/analytics-path.d.ts
40
+ declare class AnalyticsPath {
41
+ get segments(): AnalyticsPathSegment[];
42
+ private _segments;
43
+ static fromString(path: string): AnalyticsPath;
44
+ static fromStringArray(segments: string[]): AnalyticsPath;
45
+ static fromArray(segments: AnalyticsPathSegment[]): AnalyticsPath;
46
+ static fromJSON(json: any): AnalyticsPath;
47
+ constructor(segments: AnalyticsPathSegment[]);
48
+ toJSON(): {
49
+ _t: AnalyticsSerializerTypes;
50
+ _v: string;
51
+ };
52
+ toString(tail?: string): string;
53
+ firstSegment(): AnalyticsPathSegment;
54
+ reduce(): AnalyticsPath;
55
+ applyLod(levelOfDetail: number): AnalyticsPath;
56
+ }
57
+ declare class AnalyticsPathSegment {
58
+ get filters(): NullableStrings;
59
+ get groups(): NullableStrings;
60
+ private _filters;
61
+ private _groups;
62
+ static fromString(segment: string): AnalyticsPathSegment;
63
+ static escape(segment: string): string;
64
+ static unescape(segment: string): string;
65
+ constructor(filters?: NullableStrings, groups?: NullableStrings);
66
+ toJSON(): {
67
+ _t: AnalyticsSerializerTypes;
68
+ _v: string;
69
+ };
70
+ toString(): string;
71
+ }
72
+ type NullableStrings = string[] | null;
73
+ //#endregion
74
+ //#region analytics/types.d.ts
75
+ type AnalyticsSeriesQuery = {
76
+ start: DateTime | null;
77
+ end: DateTime | null;
78
+ metrics: string[];
79
+ currency?: AnalyticsPath;
80
+ select: Record<string, AnalyticsPath[]>;
81
+ };
82
+ type AnalyticsQuery = AnalyticsSeriesQuery & {
83
+ granularity: AnalyticsGranularity;
84
+ lod: Record<string, number | null>;
85
+ };
86
+ type AnalyticsSeries<D = string | AnalyticsDimension> = {
87
+ source: AnalyticsPath;
88
+ start: DateTime;
89
+ end: DateTime | null;
90
+ metric: string;
91
+ value: number;
92
+ unit: string | null;
93
+ fn: string;
94
+ params: Record<string, unknown> | null;
95
+ dimensions: Record<string, D>;
96
+ };
97
+ type AnalyticsDimension = {
98
+ path: AnalyticsPath;
99
+ icon: string;
100
+ label: string;
101
+ description: string;
102
+ };
103
+ type CompoundAnalyticsQuery = {
104
+ start: DateTime | null;
105
+ end: DateTime | null;
106
+ granularity: AnalyticsGranularity;
107
+ lod: Record<string, number | null>;
108
+ select: Record<string, AnalyticsPath[]>;
109
+ expression: CompoundAnalyticsExpression;
110
+ };
111
+ type CompoundAnalyticsExpression = {
112
+ inputs: CompoundAnalyticsInputs;
113
+ operator: CompoundOperator;
114
+ operand: AnalyticsOperand;
115
+ resultCurrency?: AnalyticsPath;
116
+ };
117
+ type CompoundAnalyticsInputs = {
118
+ metrics: string[];
119
+ currency?: AnalyticsPath;
120
+ };
121
+ type AnalyticsOperand = {
122
+ metric: string;
123
+ currency?: AnalyticsPath;
124
+ useSum: boolean;
125
+ };
126
+ type MultiCurrencyConversion = {
127
+ targetCurrency?: AnalyticsPath;
128
+ conversions: ConversionMetric[];
129
+ };
130
+ type ConversionMetric = {
131
+ metric: string;
132
+ currency?: AnalyticsPath;
133
+ };
134
+ type AnalyticsSeriesInput = {
135
+ start: DateTime;
136
+ end?: DateTime | null;
137
+ source: AnalyticsPath;
138
+ metric: string;
139
+ value: number;
140
+ unit?: string | null;
141
+ fn?: string | null;
142
+ params?: Record<string, any> | null;
143
+ dimensions: Record<string, AnalyticsPath>;
144
+ dimensionMetadata?: Record<string, string>;
145
+ };
146
+ type AnalyticsUpdateCallback = (source: AnalyticsPath) => void;
147
+ interface IAnalyticsStore {
148
+ clearSeriesBySource: (source: AnalyticsPath, cleanUpDimensions?: boolean) => Promise<number>;
149
+ clearEmptyAnalyticsDimensions: () => Promise<number>;
150
+ getMatchingSeries: (query: AnalyticsSeriesQuery) => Promise<AnalyticsSeries[]>;
151
+ addSeriesValue: (input: AnalyticsSeriesInput) => Promise<void>;
152
+ addSeriesValues: (inputs: AnalyticsSeriesInput[]) => Promise<void>;
153
+ getDimensions: () => Promise<any>;
154
+ subscribeToSource: (source: AnalyticsPath, callback: AnalyticsUpdateCallback) => () => void;
155
+ }
156
+ //#endregion
157
+ export { AnalyticsMetric as _, AnalyticsSeriesInput as a, CompoundOperator as b, CompoundAnalyticsExpression as c, ConversionMetric as d, IAnalyticsStore as f, AnalyticsGranularity as g, AnalyticsPathSegment as h, AnalyticsSeries as i, CompoundAnalyticsInputs as l, AnalyticsPath as m, AnalyticsOperand as n, AnalyticsSeriesQuery as o, MultiCurrencyConversion as p, AnalyticsQuery as r, AnalyticsUpdateCallback as s, AnalyticsDimension as t, CompoundAnalyticsQuery as u, AnalyticsPeriodType as v, AnalyticsSerializerTypes as y };
158
+ //# sourceMappingURL=types-DWXYsIF1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-DWXYsIF1.d.ts","names":[],"sources":["../analytics/constants.ts","../analytics/analytics-path.ts","../analytics/types.ts"],"mappings":"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"}