@ja-platform/db 0.0.0-dev-20261028223022 → 0.0.0-stage

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 (95) hide show
  1. package/README.md +3 -0
  2. package/package.json +3 -52
  3. package/LICENSE +0 -521
  4. package/dist/@types/Schema.d.ts +0 -1
  5. package/dist/@types/app.d.ts +0 -12
  6. package/dist/@types/browser.d.ts +0 -31
  7. package/dist/@types/credentials/ApiCredentials.d.ts +0 -18
  8. package/dist/@types/credentials/MobileCredentials.d.ts +0 -22
  9. package/dist/@types/credentials/index.d.ts +0 -2
  10. package/dist/@types/database/Batch.d.ts +0 -61
  11. package/dist/@types/database/Collection.d.ts +0 -85
  12. package/dist/@types/database/Database.d.ts +0 -22
  13. package/dist/@types/database/DatabaseObject.d.ts +0 -51
  14. package/dist/@types/database/GenericDatabase.d.ts +0 -4
  15. package/dist/@types/database/JourneyAPIAdapter.d.ts +0 -45
  16. package/dist/@types/database/ObjectDisplayScope.d.ts +0 -22
  17. package/dist/@types/database/OnlineDB.d.ts +0 -8
  18. package/dist/@types/database/adapters/BaseAdapter.d.ts +0 -26
  19. package/dist/@types/database/adapters/DatabaseAdapter.d.ts +0 -22
  20. package/dist/@types/database/adapters/WebSQLAdapter.d.ts +0 -50
  21. package/dist/@types/index.d.ts +0 -2
  22. package/dist/@types/query/InternalQuery.d.ts +0 -17
  23. package/dist/@types/query/Query.d.ts +0 -133
  24. package/dist/@types/query/getPreloadRelationships.d.ts +0 -9
  25. package/dist/@types/query/queryOperations.d.ts +0 -87
  26. package/dist/@types/types/Attachment.d.ts +0 -104
  27. package/dist/@types/types/Location.d.ts +0 -18
  28. package/dist/@types/types/ObjectData.d.ts +0 -12
  29. package/dist/@types/types/TypeOperations.d.ts +0 -42
  30. package/dist/@types/utils/FunctionQueue.d.ts +0 -32
  31. package/dist/@types/utils/JourneyPromise.d.ts +0 -2
  32. package/dist/@types/utils/base64.d.ts +0 -4
  33. package/dist/@types/utils/retryableFetch.d.ts +0 -3
  34. package/dist/Schema.js +0 -6
  35. package/dist/Schema.js.map +0 -1
  36. package/dist/app.js +0 -30
  37. package/dist/app.js.map +0 -1
  38. package/dist/browser.js +0 -77
  39. package/dist/browser.js.map +0 -1
  40. package/dist/credentials/ApiCredentials.js +0 -61
  41. package/dist/credentials/ApiCredentials.js.map +0 -1
  42. package/dist/credentials/MobileCredentials.js +0 -73
  43. package/dist/credentials/MobileCredentials.js.map +0 -1
  44. package/dist/credentials/index.js +0 -19
  45. package/dist/credentials/index.js.map +0 -1
  46. package/dist/database/Batch.js +0 -189
  47. package/dist/database/Batch.js.map +0 -1
  48. package/dist/database/Collection.js +0 -69
  49. package/dist/database/Collection.js.map +0 -1
  50. package/dist/database/Database.js +0 -47
  51. package/dist/database/Database.js.map +0 -1
  52. package/dist/database/DatabaseObject.js +0 -646
  53. package/dist/database/DatabaseObject.js.map +0 -1
  54. package/dist/database/GenericDatabase.js +0 -3
  55. package/dist/database/GenericDatabase.js.map +0 -1
  56. package/dist/database/JourneyAPIAdapter.js +0 -357
  57. package/dist/database/JourneyAPIAdapter.js.map +0 -1
  58. package/dist/database/ObjectDisplayScope.js +0 -117
  59. package/dist/database/ObjectDisplayScope.js.map +0 -1
  60. package/dist/database/OnlineDB.js +0 -16
  61. package/dist/database/OnlineDB.js.map +0 -1
  62. package/dist/database/adapters/BaseAdapter.js +0 -66
  63. package/dist/database/adapters/BaseAdapter.js.map +0 -1
  64. package/dist/database/adapters/DatabaseAdapter.js +0 -3
  65. package/dist/database/adapters/DatabaseAdapter.js.map +0 -1
  66. package/dist/database/adapters/WebSQLAdapter.js +0 -343
  67. package/dist/database/adapters/WebSQLAdapter.js.map +0 -1
  68. package/dist/index.js +0 -20
  69. package/dist/index.js.map +0 -1
  70. package/dist/query/InternalQuery.js +0 -3
  71. package/dist/query/InternalQuery.js.map +0 -1
  72. package/dist/query/Query.js +0 -414
  73. package/dist/query/Query.js.map +0 -1
  74. package/dist/query/getPreloadRelationships.js +0 -45
  75. package/dist/query/getPreloadRelationships.js.map +0 -1
  76. package/dist/query/queryOperations.js +0 -678
  77. package/dist/query/queryOperations.js.map +0 -1
  78. package/dist/tsconfig.tsbuildinfo +0 -1
  79. package/dist/types/Attachment.js +0 -198
  80. package/dist/types/Attachment.js.map +0 -1
  81. package/dist/types/Location.js +0 -38
  82. package/dist/types/Location.js.map +0 -1
  83. package/dist/types/ObjectData.js +0 -3
  84. package/dist/types/ObjectData.js.map +0 -1
  85. package/dist/types/TypeOperations.js +0 -267
  86. package/dist/types/TypeOperations.js.map +0 -1
  87. package/dist/utils/FunctionQueue.js +0 -91
  88. package/dist/utils/FunctionQueue.js.map +0 -1
  89. package/dist/utils/JourneyPromise.js +0 -3
  90. package/dist/utils/JourneyPromise.js.map +0 -1
  91. package/dist/utils/base64.js +0 -40
  92. package/dist/utils/base64.js.map +0 -1
  93. package/dist/utils/retryableFetch.js +0 -57
  94. package/dist/utils/retryableFetch.js.map +0 -1
  95. package/readme.md +0 -37
@@ -1 +0,0 @@
1
- {"version":3,"file":"JourneyPromise.js","sourceRoot":"","sources":["../../src/utils/JourneyPromise.ts"],"names":[],"mappings":"","sourcesContent":["type JourneyPromise<T> = Promise<T>;\nexport { JourneyPromise, JourneyPromise as Promise };\n"]}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- // Base64 encoding and decoding functions
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.encode = exports.decode = void 0;
5
- exports.datauri = datauri;
6
- exports.cleanDecode = cleanDecode;
7
- var base64 = {};
8
- if (typeof Buffer == 'undefined') {
9
- // Browser
10
- exports.decode = function (str) {
11
- return decodeURIComponent(window.escape(window.atob(str)));
12
- };
13
- exports.encode = function (str) {
14
- return window.btoa(window.unescape(encodeURIComponent(str)));
15
- };
16
- }
17
- else {
18
- // NodeJS
19
- exports.decode = function (str) {
20
- return new Buffer(str, 'base64').toString('ascii');
21
- };
22
- exports.encode = function (str) {
23
- return new Buffer(str).toString('base64');
24
- };
25
- }
26
- function datauri(mime, data) {
27
- return 'data:' + mime + ';base64,' + (0, exports.encode)(data);
28
- }
29
- function cleanDecode(encodedData) {
30
- var value = (0, exports.decode)(encodedData);
31
- // Sometimes this has a lot of empty characters (charCode = 0) in between. Remove them
32
- var fixedValue = '';
33
- for (var i = 0; i < value.length; i++) {
34
- if (value.charCodeAt(i) != 0) {
35
- fixedValue += value.charAt(i);
36
- }
37
- }
38
- return fixedValue;
39
- }
40
- //# sourceMappingURL=base64.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/utils/base64.ts"],"names":[],"mappings":";AAAA,yCAAyC;;;;;AAEzC,IAAI,MAAM,GAAG,EAAE,CAAC;AAMhB,IAAI,OAAO,MAAM,IAAI,WAAW,EAAE,CAAC;IACjC,UAAU;IACV,QAAA,MAAM,GAAG,UAAU,GAAG;QACpB,OAAO,kBAAkB,CAAE,MAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC;IAEF,QAAA,MAAM,GAAG,UAAU,GAAG;QACpB,OAAO,MAAM,CAAC,IAAI,CAAE,MAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC;AACJ,CAAC;KAAM,CAAC;IACN,SAAS;IAET,QAAA,MAAM,GAAG,UAAU,GAAG;QACpB,OAAO,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF,QAAA,MAAM,GAAG,UAAU,GAAG;QACpB,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC,CAAC;AACJ,CAAC;AAED,iBAAwB,IAAY,EAAE,IAAY;IAChD,OAAO,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,IAAA,QAAA,MAAM,EAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,qBAA4B,WAAmB;IAC7C,IAAI,KAAK,GAAG,IAAA,QAAA,MAAM,EAAC,WAAW,CAAC,CAAC;IAChC,sFAAsF;IACtF,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["// Base64 encoding and decoding functions\n\nvar base64 = {};\n// See https://developer.mozilla.org/en-US/docs/DOM/window.btoa\n\nexport var decode: (encodedData: string) => string;\nexport var encode: (text: string) => string;\n\nif (typeof Buffer == 'undefined') {\n // Browser\n decode = function (str) {\n return decodeURIComponent((window as any).escape(window.atob(str)));\n };\n\n encode = function (str) {\n return window.btoa((window as any).unescape(encodeURIComponent(str)));\n };\n} else {\n // NodeJS\n\n decode = function (str) {\n return new Buffer(str, 'base64').toString('ascii');\n };\n\n encode = function (str) {\n return new Buffer(str).toString('base64');\n };\n}\n\nexport function datauri(mime: string, data: string) {\n return 'data:' + mime + ';base64,' + encode(data);\n}\n\nexport function cleanDecode(encodedData: string) {\n var value = decode(encodedData);\n // Sometimes this has a lot of empty characters (charCode = 0) in between. Remove them\n var fixedValue = '';\n for (var i = 0; i < value.length; i++) {\n if (value.charCodeAt(i) != 0) {\n fixedValue += value.charAt(i);\n }\n }\n return fixedValue;\n}\n"]}
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.retryableFetch = void 0;
4
- require("isomorphic-fetch");
5
- function delay(ms, value) {
6
- return new Promise((resolve) => setTimeout(() => resolve(value), ms));
7
- }
8
- // If a fetch request errors with a "socket hang up" or similar, retry it.
9
- // Ensure the action is read-only or idempotent before using this function.
10
- const retryableFetch = async (url, options, retriesLeft = 1) => {
11
- try {
12
- const response = await fetch(url, options);
13
- if (retriesLeft > 0 && response.status >= 500 && response.status < 599) {
14
- await delay(50);
15
- return (0, exports.retryableFetch)(url, options, retriesLeft - 1);
16
- }
17
- if (retriesLeft > 0 && response.status === 429) {
18
- await delay(1000); //FIXME: Is this waiting too long or not long enough?
19
- return (0, exports.retryableFetch)(url, options, retriesLeft - 1);
20
- }
21
- return response;
22
- }
23
- catch (error) {
24
- if (retriesLeft > 0) {
25
- return handleNodeFetchError(error, exports.retryableFetch, [url, options, retriesLeft - 1]);
26
- // TODO: Can we handle native/browser fetch errors?
27
- // FIXME: do we want to retry on request.timeout?
28
- }
29
- else {
30
- throw error;
31
- }
32
- }
33
- };
34
- exports.retryableFetch = retryableFetch;
35
- // FIXME: This refactor isn't quite as pretty as I was hoping. Is there a better way?
36
- const handleNodeFetchError = async (error, retryFn, args) => {
37
- if (
38
- // node-fetch wraps operational errors as FetchError. Other implementations don't.
39
- error.constructor.name === 'FetchError' &&
40
- error.type === 'system') {
41
- switch (error.code) {
42
- case 'ECONNRESET': // remote socket closed.
43
- // retry immediately.
44
- return retryFn(...args);
45
- case 'ENOTFOUND': // DNS
46
- await delay(1000);
47
- return retryFn(...args);
48
- case 'ECONNREFUSED': // service is down
49
- await delay(1000);
50
- return retryFn(...args);
51
- }
52
- }
53
- // Unknown error
54
- await delay(1000);
55
- return retryFn(...args);
56
- };
57
- //# sourceMappingURL=retryableFetch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retryableFetch.js","sourceRoot":"","sources":["../../src/utils/retryableFetch.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAG1B,SAAS,KAAK,CAAI,EAAU,EAAE,KAAS;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,0EAA0E;AAC1E,2EAA2E;AACpE,MAAM,cAAc,GAAG,KAAK,EAAE,GAAW,EAAE,OAAoB,EAAE,WAAW,GAAW,CAAC,EAAqB,EAAE;IACpH,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAc,CAAC,CAAC;QAElD,IAAI,WAAW,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACvE,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,IAAA,QAAA,cAAc,EAAC,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,WAAW,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC/C,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;YACxE,OAAO,IAAA,QAAA,cAAc,EAAC,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,QAAe,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,oBAAoB,CAAC,KAAK,EAAE,QAAA,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;YACpF,mDAAmD;YACnD,iDAAiD;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAtBW,QAAA,cAAc,GAAd,cAAc,CAsBzB;AAEF,qFAAqF;AACrF,MAAM,oBAAoB,GAAG,KAAK,EAAE,KAAK,EAAE,OAAiB,EAAE,IAAW,EAAE,EAAE;IAC3E;IACE,kFAAkF;IAClF,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY;QACvC,KAAK,CAAC,IAAI,KAAK,QAAQ,EACvB,CAAC;QACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,YAAY,EAAE,wBAAwB;gBACzC,qBAAqB;gBACrB,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1B,KAAK,WAAW,EAAE,MAAM;gBACtB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1B,KAAK,cAAc,EAAE,kBAAkB;gBACrC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,gBAAgB;IAChB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC","sourcesContent":["import 'isomorphic-fetch';\nimport type { Response, RequestInit } from 'node-fetch';\n\nfunction delay<T>(ms: number, value?: T): Promise<T> {\n return new Promise((resolve) => setTimeout(() => resolve(value), ms));\n}\n\n// If a fetch request errors with a \"socket hang up\" or similar, retry it.\n// Ensure the action is read-only or idempotent before using this function.\nexport const retryableFetch = async (url: string, options: RequestInit, retriesLeft: number = 1): Promise<Response> => {\n try {\n const response = await fetch(url, options as any);\n\n if (retriesLeft > 0 && response.status >= 500 && response.status < 599) {\n await delay(50);\n return retryableFetch(url, options, retriesLeft - 1);\n }\n if (retriesLeft > 0 && response.status === 429) {\n await delay(1000); //FIXME: Is this waiting too long or not long enough?\n return retryableFetch(url, options, retriesLeft - 1);\n }\n return response as any;\n } catch (error) {\n if (retriesLeft > 0) {\n return handleNodeFetchError(error, retryableFetch, [url, options, retriesLeft - 1]);\n // TODO: Can we handle native/browser fetch errors?\n // FIXME: do we want to retry on request.timeout?\n } else {\n throw error;\n }\n }\n};\n\n// FIXME: This refactor isn't quite as pretty as I was hoping. Is there a better way?\nconst handleNodeFetchError = async (error, retryFn: Function, args: any[]) => {\n if (\n // node-fetch wraps operational errors as FetchError. Other implementations don't.\n error.constructor.name === 'FetchError' &&\n error.type === 'system'\n ) {\n switch (error.code) {\n case 'ECONNRESET': // remote socket closed.\n // retry immediately.\n return retryFn(...args);\n case 'ENOTFOUND': // DNS\n await delay(1000);\n return retryFn(...args);\n case 'ECONNREFUSED': // service is down\n await delay(1000);\n return retryFn(...args);\n }\n }\n // Unknown error\n await delay(1000);\n return retryFn(...args);\n};\n"]}
package/readme.md DELETED
@@ -1,37 +0,0 @@
1
- # JourneyApps Platform Lib
2
-
3
- The JourneyApps Platform database SDK, published as `@ja-platform/db`.
4
-
5
- ## Simple DB Usage
6
-
7
- 1. Install the database SDK with pnpm
8
-
9
- `pnpm add @ja-platform/db`
10
-
11
- 2. import the helper DB (my_script.js)
12
-
13
- ```javascript
14
- const { Database } = require("@ja-platform/db");
15
- async function run() {
16
- const db = await Database.instance({ baseUrl: 'http://test.test/api/v4/testaccount', token: process.env.API_TOKEN });
17
-
18
- // use the api as per documentation (https://docs.journeyapps.com/docs/app-database#section-usage)
19
- let user = await db.user.first();
20
- console.log(user.name);
21
- }
22
- run();
23
- ```
24
-
25
- 3. run the program via `node`
26
-
27
- `API_TOKEN=<some_token> node my_script.js`
28
-
29
- ## Code Installation
30
-
31
- Use Node 24 for development (`nvm install && nvm use`). The database SDK requires Node `^22.19.0 || ^24.11.0 || >=26.0.0` because its parser dependencies use Babel 8.
32
-
33
- CI runs `pnpm test` using the Node version in `.nvmrc`.
34
-
35
- 1. clone and run `pnpm install` in the repository root
36
- 2. run `pnpm build` to build.
37
- 3. run `pnpm test` to run all the unit tests.